UglifyjsWebpackPlugin
UglifyjsWebpackPlugin
这个插件使用UglifyJS v3 (uglify-es
)来缩小你的JavaScript
ℹ️webpack包含相同的插件
webpack.optimize.UglifyJsPlugin
。该文档除安装说明外均有效
安装
npm i -D uglifyjs-webpack-plugin
用法
webpack.config.js
const UglifyJSPlugin = require('uglifyjs-webpack-plugin')
module.exports = {
plugins: [
new UglifyJSPlugin()
]
}
选项
Name | 类型 | 默认 | 描述 |
---|---|---|---|
test | {RegExp|Array<RegExp>} | /.js$/i | 测试以匹配文件 |
include | {RegExp|Array<RegExp>} | undefined | 要包含的文件 |
exclude | {RegExp|Array<RegExp>} | undefined | 要排除的文件 |
cache | {Boolean|String} | false | 启用文件缓存 |
parallel | {Boolean|Object} | false | 使用多进程并行运行来提高构建速度 |
sourceMap | {Boolean} | false | 使用 source map 将错误信息的位置映射到模块(这会减慢编译的速度) ⚠️ cheap-source-map 选项不适用于此插件 |
uglifyOptions | {Object} | {...defaults} | uglify选项 |
extractComments | {Boolean|RegExp|Function<(node, comment) -> {Boolean|Object}>} | false | 是否将注释提取到单独的文件,(查看[详细](https://github.com/webpack/webpack/commit/71933e979e51c533b432658d5e37917f9e71595a(`webpack >= 2.3.0`) |
warningsFilter | {Function(source) -> {Boolean}} | ()=> true | 允许过滤uglify警告 |
webpack.config.js
[
new UglifyJSPlugin{
test: /\.js($|\?)/i
})
]
include
webpack.config.js
[
new UglifyJSPlugin{
include: /\/includes/
})
]
exclude
webpack.config.js
[
new UglifyJSPlugin{
exclude: /\/excludes/
})
]
cache
{Boolean}
webpack.config.js
[
new UglifyJSPlugin{
cache: true
})
]
启用文件缓存。缓存目录的默认路径:node_modules/.cache/uglifyjs-webpack-plugin
。
{String}
webpack.config.js
[
new UglifyJSPlugin{
cache: 'path/to/cache'
})
]
缓存目录的路径。
parallel
{Boolean}
webpack.config.js
[
new UglifyJSPlugin{
parallel: true
})
]
启用并行化。并发运行的默认数量:os.cpus().length - 1
。
{Number}
webpack.config.js
[
new UglifyJSPlugin{
parallel: 4
})
]
并发运行数。
Parallel️并行化可以显着加快构建,因此
强烈建议
sourceMap
webpack.config.js
[
new UglifyJSPlugin{
sourceMap: true
})
]
⚠️
选项不适用于此插件cheap-source-map
uglifyOptions
Name | 类型 | 默认 | 描述 |
---|---|---|---|
ie8 | {Boolean} | 假 | 启用IE8支持 |
ecma | {Number} | 未定义 | 支持的ECMAScript版本(5,6,7或8)。影响分析,压缩和输出选项 |
parse | {Object} | {} | 附加的分析选项 |
mangle | {Boolean|Object} | 真正 | 启用Name Mangling(请参阅Mangle Properties for advanced settings,与⚠️一起使用) |
output | {Object} | {} | 额外的输出选项(默认值已优化以获得最佳压缩效果) |
compress | {Boolean|Object} | 真正 | 其他压缩选项 |
warnings | {Boolean} | 假 | 显示警告 |
webpack.config.js
[
new UglifyJSPlugin{
uglifyOptions: {
ie8: false,
ecma: 8,
parse: {...options},
mangle: {
...options,
properties: {
// mangle property options
}
},
output: {
comments: false,
beautify: false,
...options
},
compress: {...options},
warnings: false
}
})
]
extractComments
{Boolean}
通常由comments
选项保留的所有评论将被移至单独的文件。如果原始文件被命名foo.js
,则评论将被存储到foo.js.LICENSE
。
{RegExp|String} or {Function<(node, comment) -> {Boolean}>}
所有匹配给定表达式的注释(分别true
由函数求值)将被提取到单独的文件中。该comments
选项指定是否保留该评论,即可以在提取其他评论(例如注释)的同时保留评论,甚至可以保留已提取的评论。
{Object}
Name | 类型 | 默认 | 描述 |
---|---|---|---|
condition | {Regex|Function} | | 正则表达式或函数(请参阅前一点)| | |
filename | {String|Function} | compilation.assetsfile | 提取的注释将被存储的文件。可以是{String}或{Function <(string) - > {String}>},它将被赋予原始文件名。默认是将后缀.LICENSE附加到原始文件名 |
banner | {Boolean|String|Function} | / *!有关许可证信息,请参阅$ {filename} .js.LICENSE * / | 指向提取文件的横幅文本将被添加到原始文件的顶部。可以是假的(无横幅),{字符串}或{函数<(字符串) - > {字符串}将被存储提取的评论的文件名将被调用。将被包裹进评论 |
warningsFilter
webpack.config.js
[
new UglifyJsPlugin{
warningsFilter: (src) => true
})
]