UglifyjsWebpackPlugin
安装
使用 Yarn:
yarn add uglifyjs-webpack-plugin --dev
使用 npm:
npm install uglifyjs-webpack-plugin --save-dev
十分重要! 这个插件这个插件依赖 uglify-js,所以为了使用这个插件,也要安装 uglify-js;然而,目前 (2017/1/25) 可用的 uglify-js npm 包,不支持压缩 ES6 代码。为了支持 ES6,必须提供一个具有压缩 ES6 能力的版本,又称之为 harmony 版本。
如果你的压缩目标是 ES6:
yarn add git://github.com/mishoo/UglifyJS2#harmony --dev
如果你的压缩目标是 ES5:
yarn add uglify-js --dev
用法
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
module.exports = {
entry: {...},
output: {...},
module: {...},
plugins: [
new UglifyJSPlugin()
]
};
选项
这个插件支持 UglifyJS 的功能,如下所述:
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
compress | boolean, object | true | 见 UglifyJS 文档。 |
mangle | boolean, object | true | 见下节。 |
beautify | boolean | false | 美化输出。 |
output | 一个提供 UglifyJS OutputStream 选项的对象 | 更底层地访问 UglifyJS 输出。 | |
comments | boolean, RegExp, function(astNode, comment) -> boolean | 默认保留注释(包括 /*! , /**! , @preserve or @license )。 |
注释相关的配置 |
extractComments | boolean, RegExp, function (astNode, comment) -> boolean, object | false | 是否将注释提取到单独的文件,见下节。 |
sourceMap | boolean | false | 使用 SourceMaps 将错误信息的位置映射到模块。这会减慢编译的速度。重要! cheap 类 source map 选项无法和插件一同运行! |
test | RegExp, Array |
/.js($|\?)/i |
测试匹配的文件 |
include | RegExp, Array |
只测试包含 的文件。 |
|
exclude | RegExp, Array |
只测试被排除 的文件。 |
|
extractComments | boolean, RegExp, object | 将注释提取到单独的文件(查看详情,从 webpack 2.3.0 开始) | |
warningsFilter | function(source) -> boolean | 允许过滤 uglify 警告(从 webpack 2.3.0 开始)。 |
Mangling
mangle.props (boolean|object)
- 传递 true 或者一个对象可以启用并提供 UglifyJS mangling 属性选项 - 参考有关 mangleProperties 选项的 UglifyJS 文档。
注意:UglifyJS 警告,如果你使用 mangling 属性,你可能会破坏你的 source,所以如果你不确定你为什么需要这个特性,你最好不要使用它!你可以按如下方式调整行为:
new UglifyJsPlugin({
mangle: {
// 跳过这些
except: ['$super', '$', 'exports', 'require']
}
})
提取注释
extractComments
选项可以是:
true
: 所有在comments
选项中保存的注释都会被移到单独的文件。如果源文件是foo.js
,那注释将被存储为foo.js.LICENSE
。- 通常表达式( 如:
RegExp
或者string
)或者function (astNode, comment) -> boolean
: 所有匹配所给定的表达式( 等于返回true
的函数 )会被提取为分离文件。comments
选项指定注释是否被储存, i.e。可以在存储一些注释当在提取其他注释即使是存储已经被被提取。 object
存在下面的值,所有的选项:condition
: 通常表达式或者相应函数(见上文)filename
: 提取注释的文件会被存储。字符
或者是返回字符的函数function (string) -> string
,作为原文件名。默认加上文件后缀名.LICENSE
。banner
: Banner 文本会在原文件的头部指出被提取的文件。会在源文件加入该信息。可以是false
(表示没有banner),string
,或者function (string) -> string
会在提取已经被存储注释的时候被调用。注释会被覆盖。 默认:/*! For license information please see foo.js.LICENSE */
维护人员
Juho Vepsäläinen |
Joshua Wiens |
Kees Kluskens |
Sean Larkin |