SoCompressor- JS腳本與CSS樣式批量壓縮、混淆、美化、格式化GUI工具.
本軟件有以下幾個(gè)特點(diǎn):
1.壓縮、混淆、美化、格式化都支持,斷網(wǎng)條件下可以使用,軟件不是使用的在線API.1.支持批量操作,可以同時(shí)處理JS與CSS文件,可以多文件導(dǎo)入,多文件夾搜尋,當(dāng)然直接復(fù)制代碼進(jìn)行操作也可。
2.可以選擇對(duì)原文件的備份處理操作:如 “在各原文件所在目錄新建名為"SoCompressor_backup"的文件夾并將原文件移到到此目錄下”,"將原文件名附加標(biāo)識(shí)".bak"以備份原文件“,移動(dòng)到桌面,或者不進(jìn)行處理等。
3.可以在備份目錄下生成還原腳本。此還原腳本的作用不是壓縮備份原文件,而是可以將最近一次用SoCompressor備份的原文件以其備份前的文件名還原到其各自的應(yīng)有位置(有點(diǎn)繞。。)。
3.對(duì)輸出文件的文件名可自定義附加標(biāo)識(shí),也有預(yù)設(shè)標(biāo)識(shí),如".min",則如果原文件名為a.js,那么輸出文件的文件名則為a.min.js.
4.輸出路徑問(wèn)題。有時(shí)候我們對(duì)不同目錄下的文件一起壓縮,這時(shí)候如果用傳統(tǒng)的方法我們還得指定一個(gè)統(tǒng)一的輸出路徑,然后再將文件一個(gè)個(gè)導(dǎo)到其它地方,所以為了方便除了可以自定義輸出路徑外,也可以讓輸出文件與其各自對(duì)應(yīng)的原文件位置相同。
5.支持多個(gè)處理引擎,目前添加了YUI Compressor與UglifyJS,如果后續(xù)有需要的話還會(huì)添加.各個(gè)處理引擎的詳細(xì)參數(shù)設(shè)置在“設(shè)置”里面可以調(diào)整。關(guān)于UglifyJS:大家都知道如果要使用UglifyJS的話需要Node.js環(huán)境,所以我在軟件里面加了處理引擎初始化,如果大家要使用UglifyJS而沒(méi)有配置好的話,軟件會(huì)自動(dòng)配置Node.js環(huán)境與UglifyJS,這也是安裝包頗大的原因,包含了Node.js在x86與x64的兩個(gè)安裝包。
貼一段其中的處理代碼:
[csharp] view plaincopypublic class JSYUI:ISoCompressor
{
public string CompressionType { get; set; }
public bool DisableOptimizations { get; set; }
public bool IgnoreEval { get; set; }
public bool ObfuscateJavascript { get; set; }
public bool PreserveAllSemicolons { get; set; }
public FileInfoAndException Execute(string inFile, string outFile, Encoding encoding)
{
FileInfoAndException fe = new FileInfoAndException();
string strContent = "";
try
{
Yahoo.Yui.Compressor.JavaScriptCompressor jsCompressor = new Yahoo.Yui.Compressor.JavaScriptCompressor();
jsCompressor.Encoding = encoding;
Yahoo.Yui.Compressor.CompressionType ct1 = Yahoo.Yui.Compressor.CompressionType.Standard;
switch (CompressionType)
{
case "Standard":
ct1 = Yahoo.Yui.Compressor.CompressionType.Standard;
break;
case "None":
ct1 = Yahoo.Yui.Compressor.CompressionType.None;
break;
}
jsCompressor.CompressionType = ct1;
jsCompressor.DisableOptimizations = this.DisableOptimizations;
jsCompressor.IgnoreEval = this.IgnoreEval; //大小寫(xiě)變換
jsCompressor.ObfuscateJavascript = this.ObfuscateJavascript; //代碼混淆
jsCompressor.PreserveAllSemicolons = this.PreserveAllSemicolons; //保留所有分號(hào)
jsCompressor.ThreadCulture = System.Globalization.CultureInfo.CurrentCulture;
strContent = jsCompressor.Compress(System.IO.File.ReadAllText(inFile, encoding));
System.IO.File.WriteAllText(outFile, strContent);
fe.outFileInfo = new FileInfo(outFile);
}
catch (Exception e)
{
fe.strException = "處理文件時(shí)出錯(cuò),錯(cuò)誤原因:" + e.Message; //此處在之后要改為捕捉具體的異常
}
return fe;
}
public bool Init()
{
return true;
}
}
public class CSSYUI:ISoCompressor
{
public string CompressionType { get; set; }
public bool RemoveComments { get; set; }
public FileInfoAndException Execute(string inFile, string outFile, Encoding encoding)
{
FileInfoAndException fe = new FileInfoAndException();
string strContent = "";
try{
Yahoo.Yui.Compressor.CssCompressor cssCompressor = new Yahoo.Yui.Compressor.CssCompressor();
Yahoo.Yui.Compressor.CompressionType ct1 = Yahoo.Yui.Compressor.CompressionType.Standard;
switch (CompressionType)
{
case "Standard":
ct1 = Yahoo.Yui.Compressor.CompressionType.Standard;
break;
case "None":
ct1 = Yahoo.Yui.Compressor.CompressionType.None;
break;
}
cssCompressor.CompressionType = ct1;
cssCompressor.RemoveComments = this.RemoveComments;
strContent = cssCompressor.Compress(System.IO.File.ReadAllText(inFile, encoding));
System.IO.File.WriteAllText(outFile, strContent);
fe.outFileInfo = new FileInfo(outFile);
}catch(Exception e)
{
fe.strException = "處理文件時(shí)出錯(cuò),錯(cuò)誤原因:" + e.Message; //此處在之后要改為捕捉具體的異常
}
return fe;
}
public bool Init()
{
return true;
}
}