FeiYan

网站导航

搜索

腾讯微博 新浪微博 FeelBLog 开源中国社区

SVN钩子和YuiCompressor实现自动压缩Js文件

2013-01-23 13:10:57     1个评论     6157次访问

对于访问量巨大又缺少足够硬件的应用,前端文件是必须要压缩的,基本上要做到节节必争,用一句老毛子经常说但是我朝的发言人从不敢说的话就是:在字节问题是,没有谈判的余地。一般压缩除了服务器压缩(例如gzip)之外,前端需要额外压缩Js、Css和图片资源,图片不说了,Js和Css文件的压缩比较常见,有些压缩比能达到50%甚至更多,这节省下来的带宽可以换不少人民币。

不过对于类似宋福如大项目来说,很多Js文件可能需要经常被修改,那么修改一次就去手动压缩一次实在是很不人道,所以可以使用SVN中的Hook去自动完成调用Shell命令压缩。

在SVN仓库的hooks文件夹里面,把post-commit.tmpl复制一个为post-commit,编辑post-commit,添加如下代码:

for updatePath in `/usr/bin/svnlook changed -r $REV $REPOS | awk '{print $2}'`
do
    ori="/data/svn/js/$updatePath"
    if [ -f "$ori" ]; then
        if [ "js" == ${ori##*.} ]; then
            str=${updatePath##*/}
            str=${str/%.js/.min.js}
            min="/data/svn/js/min/$str"
            java -jar /opt/Soft/yui/yuicompressor.jar --nomunge --preserve-semi --disable-optimizations --charset utf-8 ${ori} -o ${min}
            echo $(date +%Y-%m-%d" "%T)" | ""Compress ${str}" >> /var/log/compress_log.txt
        fi
    fi
done

使用yuicompressor作为压缩工具,压缩选项或者使用这个压缩Css文件可以参考yuicompressor的官方网站,这里最小化压缩,只是去除Js里面的空格、注释并且替换部分比较长的变量名称,一般不会影响前端使用或者出现Js冲突。

当然这只是利用SVN钩子去做一些自动化的小例子,SVN或者YuiCompressor都会有更多其它巧妙的用法等待挖掘。

文章标签: svn  hooks  yuicompressor 

本文地址:SVN钩子和YuiCompressor实现自动压缩Js文件

相关文章

2012-10-21:VMware WorkStation 9.0.0 build-812388下载和注册码

2012-10-21:VMware WorkStation安装64位系统

2012-12-31:2012最后的更新

2013-01-21:PHP+jQuery+jCrop在线裁剪头像

2013-02-18:一个关于自建IP库的设想

2013-02-25:C#+SQL Sever的大学生就业招聘系统

2013-03-05:MySQL 5.6.10安装图解和配置

2013-03-15:烟花三月下江南 杭州两日游

2013-04-18:Linode变更套餐

2013-05-30:在浏览器地址栏上敲下www.taobao.com后都会发生些什么?

1 Comments »

  1. win8miwin8mi
    我还是手动压缩的

    2013-02-01 17:04:39   

发布评论

最新评论

  1. SpecsSpecs

    不错~~

  2. zhyzhy

    我也遇到这个问题 不知道是swf 、jcrop 、 uploadify 还是浏览器缓存

  3. java开发java开发

    您好!我按你的源码进行了编,能正常运行,但是我们项目是由java开发的,怎么做才能将生成的一个可执行文件?我想把这个文件放到服务器上直接运行,不想安装~