1. UglifyjsWebpackPlugin

这个插件使用 UglifyJS v3(uglify-es) 来压缩你的JavaScript。

[info]

webpack =< v3.0.0目前在webpack.optimize.UglifyJsPlugin下包含这个插件的v0.4.6 版本的别名。对于最新版本的使用 (v1.0.0),请跟随下面的步骤, v1.0.0预计将会在webpack v4.0.0中作为webpack.optimize.UglifyJsPlugin存在。

1.1. 安装

npm i -D uglifyjs-webpack-plugin

1.2. 用法

webpack.config.js

const UglifyJSPlugin = require('uglifyjs-webpack-plugin')

module.exports = {
  plugins: [
    new UglifyJSPlugin(options)
  ]
}

1.3. 选项

名称 类型 默认值 描述
test `{RegExp\ Array}` /\.js$/i 测试匹配的文件
include `{RegExp\ Array}` undefined 包含的文件
exclude `{RegExp\ Array}` undefined 排除的文件
cache `{Boolean\ String}` false 开启文件缓存来提高构建速度
parallel `{Boolean\ Number}` false 使用多进程并行运行来提高构建速度
sourceMap {Boolean} false 使用源映射将错误信息位置映射到模块 (这减慢了编译的速度) ⚠️ cheap-source-map 选项不能和这个插件一同工作
uglifyOptions {Object} {...defaults} uglify 选项
extractComments `{Boolean\ RegExp\ Function<(node, comment) -> {Boolean\ Object}>}` false 是否将注释提取到单独的文件, (参见 细节 (webpack >= 2.3.0)
warningsFilter {Function(source) -> {Boolean}} () => true 允许过滤uglify警告
new UglifyJSPlugin({
  test: /\.js($|\?)/i,
  include: /\/includes/,
  exclude: /\/excludes/,
  sourceMap: true,
  warningsFilter: (src) => true
})

1.3.1. cache

类型:boolean | string

boolean

cache为布尔值时表示是否启用文件缓存。 默认的缓存目录路径:node_modules/.cache/uglifyjs-webpack-plugin

new UglifyJSPlugin({
  cache: true // 启用缓存
})

string

cache还可以指定为一个字符串,表示缓存路径。

new UglifyJSPlugin({
  cache: 'path/to/cache' // 启用缓存,并指定缓存路径
})

1.3.2. parallel

类型:boolean | number

Boolean

实现并行化。默认并发运行的数量: os.cpus().length - 1.

 new UglifyJSPlugin({
    parallel: true
  })

number

也可直接指定并发运行数量。

new UglifyJSPlugin({
    parallel: 4
  })

[info] 注:

并行化可以显著提高您的构建速度,因此高度推荐

1.3.3. uglifyOptions

名称 类型 默认值 描述
ie8 {Boolean} false 启用 IE8 支持
ecma {Number} undefined 支持 ECMAScript 版本 (5, 6, 7 or 8). 影响 parse, compress && output 选项
parse {Object} {} 额外的解析选项
mangle `{Boolean\ Object}` true 启用名称改编Enable Name Mangling (参见 Mangle Properties 获取高级设置,请谨慎使用 ⚠️)
output {Object} {} 额外的输出选项 (默认值是为了最佳压缩而优化的)
compress `{Boolean\ Object}` true 额外的压缩选项
warnings {Boolean} false 显示警告
  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
    }
  })

1.3.4. extractComments

类型:Boolean | RegExp|String or Function<(node, comment) -> {Boolean}> | object

boolean

comments选项将保存的所有注释将被移动到一个单独的文件中。如果原始文件被命名为foo.js,然后这些注释将被存储到foo.js.LICENSE

RegExp|String or Function<(node, comment) -> {Boolean}>

所有与给定表达式匹配的注释(分别被函数计算为true)将被提取到单独的文件中。comments选项指定是否保留注释,也就是说,在提取其他注释时保存一些注释(例如释文),或者保存 已经提取的注释。

名称 类型 默认值 描述
condition `{Regex\ Function}` `` 正则表达式或函数 (参见之前的要点)
filename `{String\ Function}` ${file}.LICENSE 被提取的注释文件将要被存储到的地方。可以是一个{String} 或者一个{Function<(string) -> {String}>},得到的将是一个原始文件名。默认是将.LICENSE后缀添加到原始文件名
banner `{Boolean\ String\ Function}` /*! For license information please see ${filename}.js.LICENSE */ banner 文本是指向提取出的文件并将会被添加到原始文件的顶部。可以是 false(表示没有 banner),一个 {String},或者一个 {Function<(string) -> {String} 返回字符串的函数,会在提取出的文件被存储时候调用。将被包装成注释。

object

名称 类型 默认值 描述
condition {Regex or Function} `` 通常表达式或者相应函数(见上文)
filename {String or Function} compilation.assets[file] 提取注释的文件会被存储。可以使一个 {String}字符串或者是一个 {Function<(string) -> {String}>} 返回字符串的函数,作为原文件名。默认加上文件后缀名 .LICENSE
banner {Boolean String Function} /*! For license information please see ${filename}.js.LICENSE */ banner 文本会在原文件的头部指出被提取的文件,会在源文件加入该信息。可以是 false(表示没有 banner),一个 {String},或者一个 {Function<(string) -> {String} 返回字符串的函数,会在提取已经被存储注释的时候被调用。注释会被覆盖。
Copyright © tuzhu008 2017 all right reserved,powered by Gitbook该文件修订时间: 2017-11-23 09:15:34

results matching ""

    No results matching ""