SoCompressor-JS与CSS本地批量压缩、混淆、美化、格式化GUI工具.

前一段时间在写web时自己写了几个JS文件用于前后台展示与交互,在后来要压缩js时发现基本都是带命令行的压缩工具,而且不能批量处理,在线压缩压缩完毕之后得一个个下,最可悲的是还需要自己重命名文件并且选择下载位置,太麻烦了。后来再网上搜了一下,发现这类GUI工具确定比较少,即使有功能也少的可怜(最无语的是有的出错不报,很郁闷),恰好最近想再练练winform,所以就萌生了自己写一个相关用途的小工具的想法,当然由于水平有限界面做的很难看,各位见谅,不过功能虽简单应该还是有一点实用价值的吧。

软件起了个名:SoCompressor,需要.Net Framework3.5的支持。


本小工具有以下几个特点:

1.压缩、混淆、美化、格式化都支持,断网条件下可以使用,软件不是使用的在线API.

1.支持批量操作,可以同时处理JS与CSS文件,可以多文件导入,多文件夹搜寻,当然直接复制代码进行操作也可。

2.可以选择对原文件的备份处理操作:如 “在各原文件所在目录新建名为"SoCompressor_backup"的文件夹并将原文件移到到此目录下”,"将原文件名附加标识".bak"以备份原文件“,移动到桌面,或者不进行处理等。

3.可以在备份目录下生成还原脚本。此还原脚本的作用不是压缩备份原文件,而是可以将最近一次用SoCompressor备份的原文件以其备份前的文件名还原到其各自的应有位置(有点绕。。)。

3.对输出文件的文件名可自定义附加标识,也有预设标识,如".min",则如果原文件名为a.js,那么输出文件的文件名则为a.min.js.

4.输出路径问题。有时候我们对不同目录下的文件一起压缩,这时候如果用传统的方法我们还得指定一个统一的输出路径,然后再将文件一个个导到其它地方,所以为了方便除了可以自定义输出路径外,也可以让输出文件与其各自对应的原文件位置相同。

5.支持多个处理引擎,目前添加了YUI Compressor与UglifyJS,如果后续有需要的话还会添加.各个处理引擎的详细参数设置在“设置”里面可以调整。关于UglifyJS:大家都知道如果要使用UglifyJS的话需要Node.js环境,所以我在软件里面加了处理引擎初始化,如果大家要使用UglifyJS而没有配置好的话,软件会自动配置Node.js环境与UglifyJS,这也是安装包颇大的原因,包含了Node.js在x86与x64的两个安装包。


SoCompressor已升级到2.0版本,需要的朋友可到 http://blog.csdn.net/tp7309/article/details/9799559 查看更新内容。


v1.0版本配几张图。






贴一段其中的处理代码:

public 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;   //大小写变换
                jsCompressor.ObfuscateJavascript = this.ObfuscateJavascript;    //代码混淆
                jsCompressor.PreserveAllSemicolons = this.PreserveAllSemicolons;   //保留所有分号
                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 = "处理文件时出错,错误原因:" + 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 = "处理文件时出错,错误原因:" + e.Message;  //此处在之后要改为捕捉具体的异常
            }
            return fe;
        }

        public bool Init()
        {
            return true;
        }
    }

汗,今天刚发现发布的工具中少了点代码,已补上。

SoCompressor下载地址:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值