/// <summary> /// 压缩javascript内容 /// </summary> /// <param name="jsContent"></param> /// <returns></returns> private string PackJavascript(string jsContent) { try { jsContent = new ECMAScriptPacker().Pack(jsContent).Replace("\n", "\r\n"); } catch { } return(jsContent); }
public string JSPackerCrypto(string js) { string after = new ECMAScriptPacker().Pack(js); if (next != null) { return(next.JSPackerCrypto(after)); } return(after); }
private void encodingHandler(object thread) { while (true) { int processingIndex = NowFileIndex; lock (this) { processingIndex = NowFileIndex; ++NowFileIndex; } if (processingIndex >= Files.Count) { ((Thread)thread).Abort(); } try { using (StreamReader fileReader = new StreamReader(Files[processingIndex].Path, FileEncoding)) { string jsCode = fileReader.ReadToEnd(); ECMAScriptPacker encoder = new ECMAScriptPacker(PackerEncoding, isFastCode, isSpecialCharacters); string encodeJs = encoder.Pack(jsCode).Replace("\n", "\r\n"); string outPutFilePath = Path.Combine(OutPutDirPath, Files[processingIndex].OutputDir.Substring(1)); string outPutFileDirPath = Path.GetDirectoryName(outPutFilePath); if (!Directory.Exists(outPutFileDirPath)) { Directory.CreateDirectory(outPutFileDirPath); } using (StreamWriter fileWriter = new StreamWriter(outPutFilePath, true, FileEncoding)) { fileWriter.Write(encodeJs); } } IncreaseProgress(processingIndex); } catch { FailureFileList.Add(Files[processingIndex].Path); this.Dispatcher.BeginInvoke(new ThreadStart(() => { ++ProgressBar.Value; })); } } }
public void Process(BundleContext context, BundleResponse response) { if (context == null) { throw new ArgumentNullException("context"); } if (response == null) { throw new ArgumentNullException("response"); } if (!context.EnableInstrumentation) { try { ECMAScriptPacker p = new ECMAScriptPacker(ECMAScriptPacker.PackerEncoding.Normal, true, true); response.Content = p.Pack(response.Content); } catch (Exception ex) { response.Content = "/*\r\nError:" + ex.Message + "\r\n*/\r\n" + response.Content; } } response.ContentType = "text/javascript"; }
protected void Page_Load(object sender, EventArgs e) { string sType = Request.QueryString["t"]; if (sType == null) { Response.Write("WebPackage Tools Version 1.0.0<br>"); Response.Write("請使用參數 t 選擇打包範圍:<br>"); Response.Write("EX:__EncodePage.aspx?t=1<br><br>"); Response.Write("1:HTML網頁編碼並打包<br>"); Response.Write("2:HTML網頁編碼與Bin檔案打包<br>"); Response.Write("3:打包網站所有必須內容<br>"); return; } int iType = int.Parse(sType); List <string> cFiles = new List <string>(128); cFiles.AddRange(Directory.GetFiles(Server.MapPath("."), "*.html")); cFiles.AddRange(Directory.GetFiles(Server.MapPath("~\\html\\"), "*.html", SearchOption.AllDirectories)); cFiles.AddRange(Directory.GetFiles(Server.MapPath("."), "*.aspx")); StringBuilder cBuilder = new StringBuilder(10485760); ECMAScriptPacker cScriptPacker = new ECMAScriptPacker(ECMAScriptPacker.PackerEncoding.Normal, true, false); Directory.CreateDirectory(Server.MapPath("~\\encode_pages\\") + "html\\"); foreach (string sFile in cFiles) { string sSrcPath = Path.GetDirectoryName(sFile) + "\\"; string sDestPath = sSrcPath.Replace("html", "encode_pages\\html"); bool bHtmlDir = sFile.LastIndexOf("\\html\\") > -1; if (!bHtmlDir) { sDestPath += "encode_pages\\"; } string sFilename = sFile.Substring(sFile.LastIndexOf("\\") + 1); if (sFilename.Equals("__EncodePage.aspx")) { continue; } string sContent = File.ReadAllText(sFile, Encoding.UTF8); cBuilder.Length = 0; int iCurrent = 0; while (true) { int iIndex = sContent.IndexOf("<script type=\"text/javascript\">", iCurrent); if (iIndex == -1) { cBuilder.Append(sContent.Substring(iCurrent)); break; } int iStart = sContent.IndexOf(">", iIndex); if (iStart > -1) { ++iStart; iIndex = sContent.IndexOf("</script>", iStart); if (iIndex > -1) { cBuilder.Append(sContent.Substring(iCurrent, iStart - iCurrent)); string sScript = sContent.Substring(iStart, iIndex - iStart); if (sScript.Length > 0) { string sEncode = cScriptPacker.Pack(sScript); cBuilder.Append(sEncode); } iCurrent = iIndex; } } } if (!Directory.Exists(sDestPath)) { Directory.CreateDirectory(sDestPath); } File.WriteAllText(sDestPath + sFilename, cBuilder.ToString(), Encoding.UTF8); } cFiles.Clear(); cFiles.AddRange(Directory.GetFiles(Server.MapPath("~\\mobile\\"), "*.html", SearchOption.AllDirectories)); Directory.CreateDirectory(Server.MapPath("~\\encode_pages\\") + "mobile\\"); foreach (string sFile in cFiles) { string sSrcPath = Path.GetDirectoryName(sFile) + "\\"; string sDestPath = sSrcPath.Replace("mobile", "encode_pages\\mobile"); bool bHtmlDir = sFile.LastIndexOf("\\mobile\\") > -1; if (!bHtmlDir) { sDestPath += "encode_pages\\"; } string sFilename = sFile.Substring(sFile.LastIndexOf("\\") + 1); string sContent = File.ReadAllText(sFile, Encoding.UTF8); cBuilder.Length = 0; int iCurrent = 0; while (true) { int iIndex = sContent.IndexOf("<script type=\"text/javascript\">", iCurrent); if (iIndex == -1) { cBuilder.Append(sContent.Substring(iCurrent)); break; } int iStart = sContent.IndexOf(">", iIndex); if (iStart > -1) { ++iStart; iIndex = sContent.IndexOf("</script>", iStart); if (iIndex > -1) { cBuilder.Append(sContent.Substring(iCurrent, iStart - iCurrent)); string sScript = sContent.Substring(iStart, iIndex - iStart); if (sScript.Length > 0) { string sEncode = cScriptPacker.Pack(sScript); cBuilder.Append(sEncode); } iCurrent = iIndex; } } } if (!Directory.Exists(sDestPath)) { Directory.CreateDirectory(sDestPath); } File.WriteAllText(sDestPath + sFilename, cBuilder.ToString(), Encoding.UTF8); } cFiles.Clear(); cFiles.AddRange(Directory.GetFiles(Server.MapPath("~\\scripts\\"), "*.*", SearchOption.AllDirectories)); foreach (string sFile in cFiles) { string sSrcPath = Path.GetDirectoryName(sFile) + "\\"; string sDestPath = sSrcPath.Replace("scripts", "encode_pages\\Scripts"); string sFilename = Path.GetFileName(sFile); string sExtName = Path.GetExtension(sFile); if (!Directory.Exists(sDestPath)) { Directory.CreateDirectory(sDestPath); } if (sExtName.Equals(".js")) { string sContent = File.ReadAllText(sFile, Encoding.UTF8); if (sContent.StartsWith("//__ZEGHS_PACKER_ENCODE_ENABLED")) { string sEncode = cScriptPacker.Pack(sContent); File.WriteAllText(sDestPath + sFilename, sEncode, Encoding.UTF8); } else { File.Copy(sFile, sDestPath + sFilename, true); } } else { File.Copy(sFile, sDestPath + sFilename, true); } } Response.Write("JavaScript編碼已經轉換完畢<br>"); if (iType > 1) { cFiles.Clear(); cFiles.AddRange(Directory.GetFiles(Server.MapPath("~\\bin\\"), "*.*", SearchOption.AllDirectories)); foreach (string sFile in cFiles) { string sSrcPath = Path.GetDirectoryName(sFile) + "\\"; string sDestPath = sSrcPath.Replace("bin", "encode_pages\\bin"); string sFilename = Path.GetFileName(sFile); string sExtName = Path.GetExtension(sFile); if (!Directory.Exists(sDestPath)) { Directory.CreateDirectory(sDestPath); } if (!sExtName.Equals(".xml") && !sExtName.Equals(".pdb")) { File.Copy(sFile, sDestPath + sFilename, true); } } Response.Write("Bin 資料夾已經複製完畢<br>"); } if (iType > 2) { cFiles.Clear(); cFiles.AddRange(Directory.GetFiles(Server.MapPath("~\\Content\\"), "*.*", SearchOption.AllDirectories)); foreach (string sFile in cFiles) { string sSrcPath = Path.GetDirectoryName(sFile) + "\\"; string sDestPath = sSrcPath.Replace("Content", "encode_pages\\Content"); string sFilename = Path.GetFileName(sFile); string sExtName = Path.GetExtension(sFile); if (!Directory.Exists(sDestPath)) { Directory.CreateDirectory(sDestPath); } File.Copy(sFile, sDestPath + sFilename, true); } Response.Write("Content 資料夾已經複製完畢<br>"); } string sZipFile = "d:\\wytc.zip"; if (File.Exists(sZipFile)) { File.Delete(sZipFile); } ZipFile.CreateFromDirectory(Server.MapPath("~\\encode_pages\\"), sZipFile, CompressionLevel.Fastest, false); Response.Write(sZipFile + " 壓縮檔案已經建立完畢<br>"); cFiles.Clear(); cFiles.AddRange(Directory.EnumerateDirectories(Server.MapPath("~\\encode_pages\\"))); foreach (string sFile in cFiles) { Directory.Delete(sFile, true); } cFiles.Clear(); cFiles.AddRange(Directory.GetFiles(Server.MapPath("~\\encode_pages\\"), "*.*")); foreach (string sFile in cFiles) { File.Delete(sFile); } Response.Write("打包暫存檔案已經刪除完畢<br><br>"); Response.Write("==打包檔案已經建立完成==<br>"); }
public void Process(BundleContext context, BundleResponse response) { var p = new ECMAScriptPacker(ECMAScriptPacker.PackerEncoding.Normal, true, false); response.Content = p.Pack(response.Content); }
/// <summary> /// Packs the provided script /// </summary> /// <param name="script">Script to pack</param> /// <returns>Packed script</returns> private static string RunPacker(string script) { ECMAScriptPacker p = new ECMAScriptPacker(ECMAScriptPacker.PackerEncoding.Normal, true, false); return(p.Pack(script).Replace("\n", "\r\n")); }
// Upload entire file private void UploadWholeFile(HttpContext context, List<FilesStatus> statuses) { StringBuilder stbCSS = new StringBuilder(); StringBuilder stbJS = new StringBuilder(); var ext = string.Empty; string guideCSS = string.Empty; string guideJS = string.Empty; int aptcss = 0; int aptjs = 0; for (int i = 0; i < context.Request.Files.Count; i++) { string filecomp = string.Empty; var file = context.Request.Files[i]; string guid = Guid.NewGuid().ToString(); var fullPath = StorageRoot + Path.GetFileName(guid + "$" + file.FileName); file.SaveAs(fullPath); byte[] filebyte = GetByteArquivo(file); ECMAScriptPacker p = new ECMAScriptPacker(0, true, true); filecomp = p.Pack(ByteToString(filebyte)).Replace("\n", "\r\n"); System.IO.File.WriteAllText(fullPath, filecomp); string fullName = Path.GetFileName(guid + "$" + file.FileName); statuses.Add(new FilesStatus(fullName, filecomp.Length, fullPath)); ext = Path.GetExtension(fullPath); if (IsJS(ext)) { stbJS.Append(filecomp); if (aptjs == 0) { aptjs = 1; guideJS = guid; } } else if (IsCSS(ext)) { stbCSS.Append(filecomp); if (aptcss == 0) { aptcss = 1; guideCSS = guid; } } } if (aptjs != 0) { string pathjs = StorageRoot + guideJS + "bundleJS.js"; if (!File.Exists(pathjs)) { File.Create(pathjs).Dispose(); } System.IO.File.WriteAllText(pathjs, stbJS.ToString()); } if (aptcss != 0) { string pathcss = StorageRoot + guideCSS + "bundleCSS.js"; File.Create(pathcss).Dispose(); System.IO.File.WriteAllText(pathcss, stbCSS.ToString()); } }
public override string Transform(string fullFileName, string text, EnvDTE.ProjectItem projectItem) { ECMAScriptPacker p = new ECMAScriptPacker(this.Settings.ChirpDeanEdwardsPackerEncoding, this.Settings.ChirpDeanEdwardsPackerFastDecode, this.Settings.ChirpDeanEdwardsPackerSpecialChars); return(p.Pack(text)); }