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

原文:https://webpack.js.org/plugins/uglifyjs-webpack-plugin/

results matching ""

    No results matching ""