diff options
Diffstat (limited to 'node_modules/uglifyjs-webpack-plugin/README.md')
-rw-r--r-- | node_modules/uglifyjs-webpack-plugin/README.md | 434 |
1 files changed, 0 insertions, 434 deletions
diff --git a/node_modules/uglifyjs-webpack-plugin/README.md b/node_modules/uglifyjs-webpack-plugin/README.md deleted file mode 100644 index a8147638c..000000000 --- a/node_modules/uglifyjs-webpack-plugin/README.md +++ /dev/null @@ -1,434 +0,0 @@ -[![npm][npm]][npm-url] -[![node][node]][node-url] -[![deps][deps]][deps-url] -[![test][test]][test-url] -[![coverage][cover]][cover-url] -[![chat][chat]][chat-url] - - -<div align="center"> - <a href="https://github.com/webpack/webpack"> - <img width="200" height="200" - src="https://cdn.rawgit.com/webpack/media/e7485eb2/logo/icon.svg"> - </a> - <h1>UglifyJS Webpack Plugin</h1> - <p>This plugin uses <a href="https://github.com/mishoo/UglifyJS2/tree/harmony">UglifyJS v3 </a><a href="https://npmjs.com/package/uglify-es">(`uglify-es`)</a> to minify your JavaScript</p> -</div> - -> ℹ️ `webpack < v4.0.0` currently contains [`v0.4.6`](https://github.com/webpack-contrib/uglifyjs-webpack-plugin/tree/version-0.4) of this plugin under `webpack.optimize.UglifyJsPlugin` as an alias. For usage of the latest version (`v1.0.0`), please follow the instructions below. Aliasing `v1.0.0` as `webpack.optimize.UglifyJsPlugin` is scheduled for `webpack v4.0.0` - -<h2 align="center">Install</h2> - -```bash -npm i -D uglifyjs-webpack-plugin -``` - -<h2 align="center">Usage</h2> - -**webpack.config.js** -```js -const UglifyJsPlugin = require('uglifyjs-webpack-plugin') - -module.exports = { - //... - optimization: { - minimizer: [ - new UglifyJsPlugin() - ] - } -} -``` - -<h2 align="center">Options</h2> - -|Name|Type|Default|Description| -|:--:|:--:|:-----:|:----------| -|**`test`**|`{RegExp\|Array<RegExp>}`| <code>/\\.js$/i</code>|Test to match files against| -|**`include`**|`{RegExp\|Array<RegExp>}`|`undefined`|Files to `include`| -|**`exclude`**|`{RegExp\|Array<RegExp>}`|`undefined`|Files to `exclude`| -|**`cache`**|`{Boolean\|String}`|`false`|Enable file caching| -|**`cacheKeys`**|`{Function(defaultCacheKeys, file) -> {Object}}`|`defaultCacheKeys => defaultCacheKeys`|Allows you to override default cache keys| -|**`parallel`**|`{Boolean\|Number}`|`false`|Use multi-process parallel running to improve the build speed| -|**`sourceMap`**|`{Boolean}`|`false`|Use source maps to map error message locations to modules (This slows down the compilation) ⚠️ **`cheap-source-map` options don't work with this plugin**| -|**`minify`**|`{Function}`|`undefined`|Allows you to override default minify function| -|**`uglifyOptions`**|`{Object}`|[`{...defaults}`](https://github.com/webpack-contrib/uglifyjs-webpack-plugin/tree/master#uglifyoptions)|`uglify` [Options](https://github.com/mishoo/UglifyJS2/tree/harmony#minify-options)| -|**`extractComments`**|`{Boolean\|RegExp\|Function<(node, comment) -> {Boolean\|Object}>}`|`false`|Whether comments shall be extracted to a separate file, (see [details](https://github.com/webpack/webpack/commit/71933e979e51c533b432658d5e37917f9e71595a) (`webpack >= 2.3.0`)| -|**`warningsFilter`**|`{Function(source) -> {Boolean}}`|`() => true`|Allow to filter uglify warnings| - -### `test` - -**webpack.config.js** -```js -[ - new UglifyJsPlugin({ - test: /\.js($|\?)/i - }) -] -``` - -### `include` - -**webpack.config.js** -```js -[ - new UglifyJsPlugin({ - include: /\/includes/ - }) -] -``` - -### `exclude` - -**webpack.config.js** -```js -[ - new UglifyJsPlugin({ - exclude: /\/excludes/ - }) -] -``` - -### `cache` - -If you use your own `minify` function please read the `minify` section for cache invalidation correctly. - -#### `{Boolean}` - -**webpack.config.js** -```js -[ - new UglifyJsPlugin({ - cache: true - }) -] -``` - -Enable file caching. -Default path to cache directory: `node_modules/.cache/uglifyjs-webpack-plugin`. - -#### `{String}` - -**webpack.config.js** -```js -[ - new UglifyJsPlugin({ - cache: 'path/to/cache' - }) -] -``` - -Path to cache directory. - -### `cacheKeys` - -**webpack.config.js** -```js -[ - new UglifyJsPlugin({ - cache: true, - cacheKeys: (defaultCacheKeys, file) => { - defaultCacheKeys.myCacheKey = 'myCacheKeyValue'; - - return defaultCacheKeys; - }, - }) -] -``` - -Allows you to override default cache keys. - -Default keys: -```js -{ - 'uglify-es': versions.uglify, // uglify version - 'uglifyjs-webpack-plugin': versions.plugin, // plugin version - 'uglifyjs-webpack-plugin-options': this.options, // plugin options - path: compiler.outputPath ? `${compiler.outputPath}/${file}` : file, // asset path - hash: crypto.createHash('md4').update(input).digest('hex'), // source file hash -} -``` - -### `parallel` - -#### `{Boolean}` - -**webpack.config.js** -```js -[ - new UglifyJsPlugin({ - parallel: true - }) -] -``` - -Enable parallelization. -Default number of concurrent runs: `os.cpus().length - 1`. - -#### `{Number}` - -**webpack.config.js** -```js -[ - new UglifyJsPlugin({ - parallel: 4 - }) -] -``` - -Number of concurrent runs. - -> ℹ️ Parallelization can speedup your build significantly and is therefore **highly recommended** - -### `sourceMap` - -If you use your own `minify` function please read the `minify` section for handling source maps correctly. - -**webpack.config.js** -```js -[ - new UglifyJsPlugin({ - sourceMap: true - }) -] -``` - -> ⚠️ **`cheap-source-map` options don't work with this plugin** - -### `minify` - -> ⚠️ **Always use `require` inside `minify` function when `parallel` option enabled** - -**webpack.config.js** -```js -[ - new UglifyJsPlugin({ - minify(file, sourceMap) { - const extractedComments = []; - - // Custom logic for extract comments - - const { error, map, code, warnings } = require('uglify-module') // Or require('./path/to/uglify-module') - .minify( - file, - { /* Your options for minification */ }, - ); - - return { error, map, code, warnings, extractedComments }; - } - }) -] -``` - -By default plugin uses `uglify-es` package. - -Examples: - -#### `uglify-js` - -```bash -npm i -D uglify-js -``` - -**webpack.config.js** -```js -[ - new UglifyJsPlugin({ - // Uncomment lines below for cache invalidation correctly - // cache: true, - // cacheKeys(defaultCacheKeys) { - // return Object.assign( - // {}, - // defaultCacheKeys, - // { 'uglify-js': require('uglify-js/package.json').version }, - // ); - // }, - minify(file, sourceMap) { - // https://github.com/mishoo/UglifyJS2#minify-options - const uglifyJsOptions = { /* your `uglify-js` package options */ }; - - if (sourceMap) { - uglifyJsOptions.sourceMap = { - content: sourceMap, - }; - } - - return require('uglify-js').minify(file, uglifyJsOptions); - } - }) -] -``` - -#### `terser` - -```bash -npm i -D terser -``` - -**webpack.config.js** -```js -[ - new UglifyJsPlugin({ - // Uncomment lines below for cache invalidation correctly - // cache: true, - // cacheKeys(defaultCacheKeys) { - // return Object.assign( - // {}, - // defaultCacheKeys, - // { terser: require('terser/package.json').version }, - // ); - // }, - minify(file, sourceMap) { - // https://github.com/fabiosantoscode/terser#minify-options - const terserOptions = { /* your `terser` package options */ }; - - if (sourceMap) { - terserOption.sourceMap = { - content: sourceMap, - }; - } - - return require('terser').minify(file, terserOptions); - } - }) -] -``` - -### [`uglifyOptions`](https://github.com/mishoo/UglifyJS2/tree/harmony#minify-options) - -|Name|Type|Default|Description| -|:--:|:--:|:-----:|:----------| -|**`ecma`**|`{Number}`|`undefined`|Supported ECMAScript Version (`5`, `6`, `7` or `8`). Affects `parse`, `compress` && `output` options| -|**`warnings`**|`{Boolean}`|`false`|Display Warnings| -|**[`parse`](https://github.com/mishoo/UglifyJS2/tree/harmony#parse-options)**|`{Object}`|`{}`|Additional Parse Options| -|**[`compress`](https://github.com/mishoo/UglifyJS2/tree/harmony#compress-options)**|`{Boolean\|Object}`|`true`|Additional Compress Options| -|**[`mangle`](https://github.com/mishoo/UglifyJS2/tree/harmony#mangle-options)**|`{Boolean\|Object}`|`{inline: false}`|Enable Name Mangling (See [Mangle Properties](https://github.com/mishoo/UglifyJS2/tree/harmony#mangle-properties-options) for advanced setups, use with ⚠️)| -|**[`output`](https://github.com/mishoo/UglifyJS2/tree/harmony#output-options)**|`{Object}`|`{comments: extractComments ? false : /^\**!\|@preserve\|@license\|@cc_on/,}`|Additional Output Options (The defaults are optimized for best compression)| -|**`toplevel`**|`{Boolean}`|`false`|Enable top level variable and function name mangling and to drop unused variables and functions| -|**`nameCache`**|`{Object}`|`null`|Enable cache of mangled variable and property names across multiple invocations| -|**`ie8`**|`{Boolean}`|`false`|Enable IE8 Support| -|**`keep_classnames`**|`{Boolean}`|`undefined`|Enable prevent discarding or mangling of class names| -|**`keep_fnames`**|`{Boolean}`|`false`| Enable prevent discarding or mangling of function names. Useful for code relying on `Function.prototype.name`. If the top level minify option `keep_classnames` is `undefined` it will be overriden with the value of the top level minify option `keep_fnames`| -|**`safari10`**|`{Boolean}`|`false`|Enable work around Safari 10/11 bugs in loop scoping and `await`| - -**webpack.config.js** -```js -[ - new UglifyJsPlugin({ - uglifyOptions: { - ecma: 8, - warnings: false, - parse: {...options}, - compress: {...options}, - mangle: { - ...options, - properties: { - // mangle property options - } - }, - output: { - comments: false, - beautify: false, - ...options - }, - toplevel: false, - nameCache: null, - ie8: false, - keep_classnames: undefined, - keep_fnames: false, - safari10: false, - } - }) -] -``` - -### `extractComments` - -#### `{Boolean}` - -All comments that normally would be preserved by the `comments` option will be moved to a separate file. If the original file is named `foo.js`, then the comments will be stored to `foo.js.LICENSE`. - -#### `{RegExp|String}` or `{Function<(node, comment) -> {Boolean}>}` - -All comments that match the given expression (resp. are evaluated to `true` by the function) will be extracted to the separate file. The `comments` option specifies whether the comment will be preserved, i.e. it is possible to preserve some comments (e.g. annotations) while extracting others or even preserving comments that have been extracted. - -#### `{Object}` - -|Name|Type|Default|Description| -|:--:|:--:|:-----:|:----------| -|**`condition`**|`{Regex\|Function}`|``|Regular Expression or function (see previous point)| -|**`filename`**|`{String\|Function}`|`${file}.LICENSE`|The file where the extracted comments will be stored. Can be either a `{String}` or a `{Function<(string) -> {String}>}`, which will be given the original filename. Default is to append the suffix `.LICENSE` to the original filename| -|**`banner`**|`{Boolean\|String\|Function}`|`/*! For license information please see ${filename}.js.LICENSE */`|The banner text that points to the extracted file and will be added on top of the original file. Can be `false` (no banner), a `{String}`, or a `{Function<(string) -> {String}` that will be called with the filename where extracted comments have been stored. Will be wrapped into comment| - -### `warningsFilter` - -**webpack.config.js** -```js -[ - new UglifyJsPlugin({ - warningsFilter: (src) => true - }) -] -``` - -<h2 align="center">Maintainers</h2> - -<table> - <tbody> - <tr> - <td align="center"> - <a href="https://github.com/hulkish"> - <img width="150" height="150" src="https://github.com/hulkish.png?size=150"> - </br> - Steven Hargrove - </a> - </td> - <td align="center"> - <a href="https://github.com/bebraw"> - <img width="150" height="150" src="https://github.com/bebraw.png?v=3&s=150"> - </br> - Juho Vepsäläinen - </a> - </td> - <td align="center"> - <a href="https://github.com/d3viant0ne"> - <img width="150" height="150" src="https://github.com/d3viant0ne.png?v=3&s=150"> - </br> - Joshua Wiens - </a> - </td> - <td align="center"> - <a href="https://github.com/michael-ciniawsky"> - <img width="150" height="150" src="https://github.com/michael-ciniawsky.png?v=3&s=150"> - </br> - Michael Ciniawsky - </a> - </td> - <td align="center"> - <a href="https://github.com/evilebottnawi"> - <img width="150" height="150" src="https://github.com/evilebottnawi.png?v=3&s=150"> - </br> - Alexander Krasnoyarov - </a> - </td> - </tr> - <tbody> -</table> - - -[npm]: https://img.shields.io/npm/v/uglifyjs-webpack-plugin.svg -[npm-url]: https://npmjs.com/package/uglifyjs-webpack-plugin - -[node]: https://img.shields.io/node/v/uglifyjs-webpack-plugin.svg -[node-url]: https://nodejs.org - -[deps]: https://david-dm.org/webpack-contrib/uglifyjs-webpack-plugin.svg -[deps-url]: https://david-dm.org/webpack-contrib/uglifyjs-webpack-plugin - -[test]: https://img.shields.io/circleci/project/github/webpack-contrib/uglifyjs-webpack-plugin.svg -[test-url]: https://circleci.com/gh/webpack-contrib/uglifyjs-webpack-plugin - -[cover]: https://codecov.io/gh/webpack-contrib/uglifyjs-webpack-plugin/branch/master/graph/badge.svg -[cover-url]: https://codecov.io/gh/webpack-contrib/uglifyjs-webpack-plugin - -[chat]: https://img.shields.io/badge/gitter-webpack%2Fwebpack-brightgreen.svg -[chat-url]: https://gitter.im/webpack/webpack |