uglifyjs-webpack-plugin中⽂⽂档此插件使⽤uglify-js进⾏js⽂件的压缩。
requirements
该模块需要的环境: node 6.9.0 webpack 4.0.0 版本以上。
getting started
开始之前,需要安装 uglifyjs-webpack-plugin:
$ npm install uglifyjs-webpack-plugin --save-dev
然后将该插件添加到你⼯程webpcak的config。例如:
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
//...
optimization: {
minimizer: [new UglifyJsPlugin()]
}
};
运⾏webpack.
Options
test
Type: String|RegExp|Array<String|RegExp> Default: /.js(?.*)?$/i
测试匹配的⽂件。
// in fig.js
new UglifyJsPlugin({
test: /\.js(\?.*)?$/i
})
include
Type: String|RegExp|Array<String|RegExp> Default: undefined
包括的⽂件。
// in fig.js
new UglifyJsPlugin({
include: /\/includes/
})
exclude
Type: String|RegExp|Array<String|RegExp> Default: undefined
不包含的⽂件。
// in fig.js
new UglifyJsPlugin({
exclude: /\/excludes/
})
cache
Type: Boolean|String Default: false
启⽤⽂件缓存。默认的缓存路径为: node_modules/.cache/uglifyjs-webpack-plugin.
如果您使⽤⾃⼰的minify函数,请正确阅读minify部分以了解缓存失效。
Boolean
启⽤缓存/关闭缓存
/
/ in fig.js
new UglifyJsPlugin({
cache: true
})
String
启⽤缓存,并设置缓存的路径。
// in fig.js
new UglifyJsPlugin({
cache: 'path/to/cache'
})
cacheKeys
Type: Function<(defaultCacheKeys, file) -> Object> Default: defaultCacheKeys => defaultCacheKeys 允许重写默认的cache keys.
默认的cache keys:
({
'uglify-js': require('uglify-js/package.json').version, // uglify version
'uglifyjs-webpack-plugin': require('../package.json').version, // plugin version
'uglifyjs-webpack-plugin-options': this.options, // plugin options
path: compiler.outputPath ? `${compiler.outputPath}/${file}` : file, // asset path
hash: ateHash('md4').update(input).digest('hex'), // source file hash
});
// in fig.js
new UglifyJsPlugin({
cache: true,
cacheKeys: (defaultCacheKeys, file) => {
return defaultCacheKeys;
},
})
parallel
Type: Boolean|Number Default: false
使⽤多进程并⾏运⾏来提⾼构建速度。默认并发运⾏次数:os.cpus().length- 1。
并⾏化可以显著地加速构建,因此强烈推荐使⽤并⾏化。
Boolean
启⽤/禁⽤多进程并⾏运⾏。
})
Number
启⽤多进程并⾏运⾏和设置并发运⾏次数。
// in fig.js
new UglifyJsPlugin({
parallel: 4
})
sourceMap
Type: Boolean Default: false
使⽤sourceMap将错误消息位置映射到模块(这会减慢编译速度)。如果您使⽤⾃⼰的minify函数,请阅读minify部分以正确处理sourceMap。
cheap-source-map 属性不适⽤于此插件。
// in fig.js
new UglifyJsPlugin({
正则表达式提取中文sourceMap: true
})
minify
Type: Function Default: undefined
允许覆盖默认的minify函数。默认插件使⽤uglify-js包。⽤于使⽤和测试未发布的版本或分⽀。
⚠ 当启⽤并⾏选项时,在minify函数中使⽤require。
// in fig.js
new UglifyJsPlugin({
minify(file, sourceMap) {
const extractedComments = [];
// Custom logic for extract comments
const { error, map, code, warnings } = require('uglify-module') // Or require('./path/to/uglify-module')
.minify(file, {
/* Your options for minification */
});
return { error, map, code, warnings, extractedComments };
}
})
uglifyOptions
Type: Object Default: default
UglifyJS 压缩选项。
warnings: false,
parse: {},
compress: {},
mangle: true, // Note `mangle.properties` is `false` by default.
output: null,
toplevel: false,
nameCache: null,
ie8: false,
keep_fnames: false,
}
})
extractComments
Type: Boolean|String|RegExp|Function<(node, comment) -> Boolean|Object> Default: false
是否将注释提取到单独的⽂件中(请参阅详细信息)。默认情况下只提取注释中使⽤/^\**!|@preserve|@license|@cc_on/i正则条件并删除剩余注释。若原始⽂件命名为foo.js。然后注释将被存储到foo.js.LICENSE.uglifyOptions.outputments选项指定是否保留注释,也就是说,在提取其他注释时可以保留⼀些注释,甚⾄保留已经提取的注释。
Boolean
启⽤/禁⽤提取注释。
// in fig.js
new UglifyJsPlugin({
extractComments: true
})
String
提取所有或⼀些(使⽤/^\**!|@preserve|@license|@cc_on/i正则匹配)注释。
// in fig.js
new UglifyJsPlugin({
extractComments: 'all'
})
RegExp
所有匹配正则表达式的注释将被提取到单独的⽂件中。
/
/ in fig.js
new UglifyJsPlugin({
extractComments: /@extract/i
})
Function<(node, comment) -> Boolean>
所有匹配正则表达式的注释将被提取到单独的⽂件中。
// in fig.js
new UglifyJsPlugin({
extractComments: function (astNode, comment) {
if (/@st(comment.value)) {
return true;
}
return false;
}
})
Object
允许⾃定义条件提取注释,指定提取⽂件名和banner。
// in fig.js
new UglifyJsPlugin({
extractComments: {
condition: /^\**!|@preserve|@license|@cc_on/i,
filename(file) {
return `${file}.LICENSE`;
},
banner(licenseFile) {
return `License information can be found in ${licenseFile}`;
}
}
})
condition
Type: Boolean|String|RegExp|Function<(node, comment) -> Boolean|Object>
设置需要提取的注释。
// in fig.js
new UglifyJsPlugin({
extractComments: {
condition: 'some',
filename(file) {
return `${file}.LICENSE`;
},
banner(licenseFile) {
return `License information can be found in ${licenseFile}`;
}
}
})
filename
Type: Regex|Function<(string) -> String> Default: ${file}.LICENSE
提取注释的⽂件将会被存储。默认是将后缀. license附加到原始⽂件名。
// in fig.js
new UglifyJsPlugin({
extractComments: {
condition: /^\**!|@preserve|@license|@cc_on/i,
filename: 'extracted-comments.js',
banner(licenseFile) {
return `License information can be found in ${licenseFile}`;
}
}
})
banner
Type: Boolean|String|Function<(string) -> String> Default: /*! For license information please see ${commentsFile} */
banner⽂本指向提取的⽂件并将被添加到原始⽂件的顶部。可能是 false(没有banner),a string, 或者⼀个Function<(string) -> String>,将使⽤存储了提取注释的⽂件名调⽤。将被纳⼊注释。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论