Mac下使用YUICompressor压缩js和css
作者:kun10 发布时间:April 19, 2011 分类:工具箱,MAC
最近入手了Mac,要用Mac来做前端开发一方面是一件装X的活,另外也是挑战自己动手能力的好机会。
入手mac后一直以来的困惑是,如何用它来进行前端代码的压缩,在此之前一直在windows平台使用集成好的yuicompressor来做压缩。
到了mac下面就得进行命令行操作了。
最初使用的方式是最笨拙的一种方式:
下载了yuicompressor的jar和依赖,配置好JAVA_HOME
使用java -jar /path/to/yuicompressor.jar path/to/file.js -o path/to/output --charset=gb18030(taobao的编码)
很明显,这种方式用多了肯定是想砸自己的电脑了:(
于是我巨想设计一种命令,
形如:cmd filename.js
运行后即可在同目录生成一个filename-min.js
由于不是很熟悉linux命令,请教了PE团队的飘零同学,于是乎产生了一个yui.php文件
它接受一个文件名参数,并调用yuicompressor.jar来做压缩
调用的时候使用php path/to/yui.php /path/to/filename.js即可
使用alias简化一下这个命令
alias yui ="php /path/to/yui.php"
调用就可以变成
yui path/to/filename.js
后来问了玉伯,才得知原来kissyteam在github的kissy-tools仓库里面已经有了mac版本的csh脚本用于调用yuicompressor.jar
yuicompressor.csh 调用了compressor.csh,后者内容如下:
原来还是明爷写的
#!/bin/tcsh # # TCSH Script for YUI Compressor # # @author mingcheng# @date 2009-12-23 # @link http://www.gracecode.com/ # Jar file path set COMPRESSOR_JAR = "yuicompressor.jar" # Command extra params set EXTRA_PARAMS = "" # Error single set ERROR_NO_JAVA = 5 set FILE_NOT_MATCH = 10 set JAR_NOT_EXIST = 15 set COMPRESS_FAILD = 20 # Check Java wether installed if (`printenv JAVA_HOME` == "") then echo "JAVA_HOME is missing, maybe Java SDK not installed?" exit $ERROR_NO_JAVA endif # reset jar file with the same path by script set -r COMPRESSOR_JAR = "`dirname $0`/$COMPRESSOR_JAR" # check $COMPRESSOR_JAR whether exit if (-r $COMPRESSOR_JAR != 1) then echo "$COMPRESSOR_JAR not exist"; exit $JAR_NOT_EXIST endif # Check input file @todo check file type if ($1 == "" || -r $1 != 1) then echo "file '$1' not exist, or '$1' is not javascript/css file" exit $FILE_NOT_MATCH endif # Generate compressed file set compressed_file = `echo $1 | sed "s/\(\.*\)\(\.[css|js]\)/\1-min\2/"` # Run YUI Compressor java -jar $COMPRESSOR_JAR $EXTRA_PARAMS $1 -o $compressed_file # Is success? if (-r $compressed_file) then set from_size = `stat -f %z $1` set to_size = `stat -f %z $compressed_file` echo "finished, compressed $1($from_size bytes) to $compressed_file($to_size bytes)." exit 0 else echo "compress faild"; exit COMPRESS_FAILD endif # vim: set et sw=4 ts=4 sts=4 fdm=marker ff=unix fenc=utf8 nobomb:
于是下之。。。
然后
alias yui="csh yui-compressor.csh"
调用和前面的php版本的脚本一样的
yui filename.js
or
yui filename.css
这样基本上可以用了已经。
不过后来又发现alias在进程结束后,yui命令就失效了。
于是把alias这句命令写在自己的~/.profile文件里面,保证每次进入终端直接使用。
对alias不太明白的同学可以man一下alias+百度一下。
事情的始末大致就是这样。。。
再后来,我发现mac版本下面的csh脚本和windows下面的cmd还有一些差异,相比windows版本做了更多的容错处理。
windows版本的cmd脚本先调用了yuicompressor.jar,之后又调用了native2ascii来处理一些非gbk编码的特殊情况。。。
具体的可以参考kissy-tools里面的yuicompressor.cmd里面的注释。
可见,mac下面不管是php脚本还是csh脚本都还要在多做一些调整。(p.s.今天才发现飘零前两天已经完成了php版本的compressor脚本)
那我还是看看有时间试着看看能不能改一下csh好了。
- EOF -