本地javascript强力压缩混淆 by Google Closure Compiler

转自:http://www.zhaokunyao.com/archives/1161

原文:http://bohuco.net/blog/2010/09/use-google-closure-compiler-local-with-php/

以前写过一篇文章,讲如何使用php和google closure compiler对javascript代码进行在线压缩,今天讲一下在离线状态下,如何使用google closure compiler进行javascript代码的压缩。

首先下载并解压 closure java application。

下载地址: http://closure-compiler.googlecode.com/files/compiler-latest.zip

在linux系统上,使用wget进行下载:

#wget http://closure-compiler.googlecode.com/files/compiler-latest.zip #unzip compiler-latest.zip

得到文件 compiler.jar。
再确认一下java是否已经安装好了。

这个compiler.jar的使用方式如下:

java -jar compiler.jar --js hello.js --js_output_file hello-compiled.js

这样就把 hello.js 压缩成了 hello-compiled.js。
更多信息请看帮助:

java -jar compiler.jar --help

如果要压缩整个目录的js,就用php写个脚本吧:

$basePath = dirname(__FILE__);
$scriptDir = $basePath.'/scripts/';
//压缩文件的输出目录
$compiledDir = $basePath.'/compiled/';
if (is_dir($scriptDir)) {
    if ($dh = opendir($scriptDir)) {
        while (($file = readdir($dh)) !== false) { 
            // read all files, if file is js and not minified then minify/compile it
            if (strpos($file, '.js') !== false && strpos($file, '.min.js') === false) { 
                //sprintf看起来就是清爽一些。 
                $compilerCommand = sprintf('/usr/bin/java -jar %s/compiler.jar --js %s --js_output_file %s', $basePath, $scriptDir.$file, $compiledDir.str_replace('.js', '.min.js', $file)); 
                exec($compilerCommand, $return, $code);
                if ($code != 0) { 
                    printf("Fuck! Something went wrong: %s (%s)", join('
', $return), $code);
                }
                else {
                    printf("%s compiled successfully.", $file);
                } 
            }
        } 
        closedir($dh); 
    }
}

如果得到出错代码 1 或者 254,需要修改compiler.jar和输出目录的权限。

-rwxr-xr-x 1 root root 4,1M 17. Jun 01:09 compiler.jar drwxrwxrwx 2 root root 4096 11. Sep 15:12 compiled #chmod a+rx compiler.jar #chmod a+w compiled

Be Sociable, Share!

若您觉得我的博文对您有帮助,欢迎点击下方按钮对我打赏
打赏