您好,欢迎访问一九零五行业门户网

前端js和css的压缩合并之nodejs_html/css_WEB-ITnose

from: http://www.cnblogs.com/starweb/archive/2013/01/24/2874838.html
1.安装nodejs
http://nodejs.org/
2.安装各自的node package
js我用的是uglifyjs github地址: https://github.com/mishoo/uglifyjs
css我用的是clean-css github地址: https://github.com/goalsmashers/clean-css
图片用的是node-smushit    github地址: https://github.com/colorhook/node-smushit
3.编写代码
//js
var  fs = require( 'fs' );
var  jsp = require( uglify-js ).parser;
var  pro = require( uglify-js ).uglify;
function  jsminifier(fliein, fileout) {
    var  fliein=array.isarray(fliein)? fliein : [fliein];
    var  origcode,ast,finalcode= '' ;
    for ( var  i=0; i      origcode = fs.readfilesync(fliein[i], 'utf8' );
     ast = jsp.parse(origcode);
     ast = pro.ast_mangle(ast);
     ast= pro.ast_squeeze(ast);
     finalcode += ';' + pro.gen_code(ast);
    }
   fs.writefilesync(fileout, finalcode, 'utf8' );
} //jsminifier('./file-src/test2.js', './file-smin/test-min.js');  //单个文件压缩 jsminifier([ './file-src/test.js' , './file-src/test2.js' ], './file-smin/test-min.js' ); //合并压缩
命令翻译
uglifyjs使用
uglifyjs [  选项... ] [  文件 ]
文件参数应该放在选项后面,uglifyjs 会读取文件中的javascript代码进行处理。如果你不指定输出的文件名,那么他会把处理后的内容输出到命令行中。
支持的选项 :
●   -b 或 –beautify - 输出格式化代码,当传入该参数,下面的附加选项用于更美观的控制格式化:
●   -i n 或 –indent n - 缩进级别(空格数量)
●   -q 或 –quote-keys - 是否用引号引起字符串对象的键(默认只会引起不能被正确标志的键名)
●   –ascii -默认 uglifyjs 不处理字符编码而直接输出 unicode 字符,通过传入该参数将非ascii编码的字符转化为\cxxxx的序列(输出总按照utf8编码,但传入该选项能得到ascii编码的输出)。
●   -nm 或 –no-mangle - 不改变变量名称
●   -ns 或 –no-squeeze - 不调用 ast_squeeze() 函数(该函数会做多种优化使得结果更小,可读性略有降低)
●   -mt 或 –mangle-toplevel - 在顶级作用域打乱变量名称(默认不开启)
●   –no-seqs - 当调用 ast_squeeze() 将会合并多个语句块为一个语句块,如 ”a=10; b=20; foo()” 将被转换为 ”a=10,b=20,foo()”
●   –no-dead-code - 默认 uglifyjs 将会删除不被用到的代码,传入该参数禁用此功能。
●   -nc 或 –no-copyright - 默认 uglifyjs 会在输出后的代码中添加版权信息等注释代码,传入该参数禁用此功能。
●   -o 文件名 或 –output 文件名 - 指定输出文件名,如果不指定,则打印到标准输出(stdout)
●   –overwrite - 如果传入的js代码来自文件而不是标准输入,传入该参数,输出会覆盖该文件。
●   –ast - 传入该参数会得到抽象的语法树而不是javascript,对调试或了解内部代码很有用。
●   -v 或 –verbose - 在标准错误输出一些信息(目前的版本仅输出操作用时)
●   –extra - 开启附加优化,这些优化并未得到全面的测试。
●   –unsafe - 开启其他附加优化,这些优化已知在特定情况下并不安全,目前仅支持:
●   foo.tostring() ==> foo+””
●   –max-line-len (默认32k字节) - 在32k字节出增加换行符,传入0禁用此功能。
●   –reserved-names - 一些类库会依赖一些变量,该参数指定的名称不会被混淆掉,多个用逗号隔开
//css
var  cleancss = require( 'clean-css' );
function  cssminifier(fliein, fileout) {
    var  fliein=array.isarray(fliein)? fliein : [fliein];
    var  origcode,finalcode= '' ;
    for ( var  i=0; i      origcode = fs.readfilesync(fliein[i], 'utf8' );
     finalcode += cleancss.process(origcode);
    }
   fs.writefilesync(fileout, finalcode, 'utf8' );
}   
//cssminifier('./file-src/indexw_20120913.css', './file-smin/index.css');  //单个文件压缩 cssminifier([ './file-src/index_20120913.css' , './file-src/indexw_20120913.css' ], './file-smin/index.css' );
//图片 var  imgminifier = require( 'node-smushit' );
//imgminifier.smushit('./file-src/images', {recursive: true}); //递归 imgminifier.smushit( './file-src/images' );
+
+
+
=
+
+
+
其它类似信息

推荐信息