Gulp 插件 —— gulp-uglify
使用 UglifyJs 压缩js文件。
用法
var gulp = require('gulp');
var uglify = require('gulp-uglify');
var pump = require('pump');
gulp.task('compress', function (cb) {
pump([
gulp.src('lib/*.js'),
uglify(),
gulp.dest('dist')
],
cb
);
});
为了合适的处理Node流的错误,推荐使用 pump,点击这里,了解为何使用它。
Options
mangle 传 false 来跳过混淆 name(变量名)
output 要指定额外的输出配置,传一个对象给他。默认的 options 值已经最优。
compress 传递一个对象来自定义压缩。设置为 false 将完全跳过压缩。
preserveComments options.output.comments的快捷选项,默认不保留注释。
all 保留全部的注释。
license 会保留可能的关于协议的信息,不管是不是包含@license 或者 /!这样的指令。 这个配置通过 **uglify-save-license*模块来实现的,只要满足下面情况中的任意一个,则被保留。
- 注释为文件的第一行。
- 注释中的内容正则匹配到特定的字符串,例如MIT, @license, 或者 Copyright
- There is a comment at the previous line, and it matches 1, 2, or 3.
- function 指定你自己的预留注释的逻辑,你将在方法中操作当前的节点以及当前的注释,你需要返回 true 或者 false。
也可以传一个 uglify 方法,来更改 UglifyJs 的默认行为,所有的选项点击这里。
Errors
当无法压缩某个文件时,gulp-uglify 会触发一个 error事件。PluginError对象中可能包含以下几个字段,
- fileName
- lineNumber
- message
使用不同版本的UglifyJS
默认的使用安装时依赖的版本,你可以通过 minifier接口来进行配置使用不同版本的
var uglifyjs = require('uglify-js'); // can be a git checkout
// or another module (such as `uglify-js-harmony` for ES6 support)
var minifer = require('gulp-uglify/minifier');
var pump = require('pump');
gulp.task('compress', function (cb) {
// the same options as described above
var options = {
preserveComments: 'license'
};
pump([
gulp.src('lib/*.js'),
minifier(options, uglifyjs),
gulp.dest('dist')
],
cb
);
});