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 }) ]