diff options
author | 2020-11-18 23:26:45 +0100 | |
---|---|---|
committer | 2020-11-18 23:26:45 +0100 | |
commit | 81ddf9b700bc48a1f8e472209f080f9c1d9a9b09 (patch) | |
tree | 8b959d50c5a614cbf9fcb346ed556140374d4b6d /node_modules/terser-webpack-plugin/README.md | |
parent | 1870f3fdf43707a15fda0f609a021f516f45eb63 (diff) | |
download | website_creator-81ddf9b700bc48a1f8e472209f080f9c1d9a9b09.tar.gz website_creator-81ddf9b700bc48a1f8e472209f080f9c1d9a9b09.tar.bz2 website_creator-81ddf9b700bc48a1f8e472209f080f9c1d9a9b09.zip |
rm node_modules
Diffstat (limited to 'node_modules/terser-webpack-plugin/README.md')
-rw-r--r-- | node_modules/terser-webpack-plugin/README.md | 731 |
1 files changed, 0 insertions, 731 deletions
diff --git a/node_modules/terser-webpack-plugin/README.md b/node_modules/terser-webpack-plugin/README.md deleted file mode 100644 index dd80e46..0000000 --- a/node_modules/terser-webpack-plugin/README.md +++ /dev/null @@ -1,731 +0,0 @@ -<div align="center"> - <a href="https://github.com/webpack/webpack"> - <img width="200" height="200" src="https://webpack.js.org/assets/icon-square-big.svg"> - </a> -</div> - -[![npm][npm]][npm-url] -[![node][node]][node-url] -[![deps][deps]][deps-url] -[![tests][tests]][tests-url] -[![cover][cover]][cover-url] -[![chat][chat]][chat-url] -[![size][size]][size-url] - -# terser-webpack-plugin - -This plugin uses [terser](https://github.com/terser-js/terser) to minify your JavaScript. - -> ℹ️ For `webpack@3` use [terser-webpack-plugin-legacy](https://www.npmjs.com/package/terser-webpack-plugin-legacy) package - -## Getting Started - -To begin, you'll need to install `terser-webpack-plugin`: - -```console -$ npm install terser-webpack-plugin --save-dev -``` - -Then add the plugin to your `webpack` config. For example: - -**webpack.config.js** - -```js -const TerserPlugin = require('terser-webpack-plugin'); - -module.exports = { - optimization: { - minimizer: [new TerserPlugin()], - }, -}; -``` - -And run `webpack` via your preferred method. - -## Options - -### `test` - -Type: `String|RegExp|Array<String|RegExp>` -Default: `/\.m?js(\?.*)?$/i` - -Test to match files against. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - test: /\.js(\?.*)?$/i, - }), - ], - }, -}; -``` - -### `include` - -Type: `String|RegExp|Array<String|RegExp>` -Default: `undefined` - -Files to include. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - include: /\/includes/, - }), - ], - }, -}; -``` - -### `exclude` - -Type: `String|RegExp|Array<String|RegExp>` -Default: `undefined` - -Files to exclude. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - exclude: /\/excludes/, - }), - ], - }, -}; -``` - -### `chunkFilter` - -Type: `Function<(chunk) -> boolean>` -Default: `() => true` - -Allowing to filter which chunks should be uglified (by default all chunks are uglified). -Return `true` to uglify the chunk, `false` otherwise. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - chunkFilter: (chunk) => { - // Exclude uglification for the `vendor` chunk - if (chunk.name === 'vendor') { - return false; - } - - return true; - }, - }), - ], - }, -}; -``` - -### `cache` - -Type: `Boolean|String` -Default: `false` - -Enable file caching. -Default path to cache directory: `node_modules/.cache/terser-webpack-plugin`. - -> ℹ️ If you use your own `minify` function please read the `minify` section for cache invalidation correctly. - -#### `Boolean` - -Enable/disable file caching. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - cache: true, - }), - ], - }, -}; -``` - -#### `String` - -Enable file caching and set path to cache directory. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - cache: 'path/to/cache', - }), - ], - }, -}; -``` - -### `cacheKeys` - -Type: `Function<(defaultCacheKeys, file) -> Object>` -Default: `defaultCacheKeys => defaultCacheKeys` - -Allows you to override default cache keys. - -Default cache keys: - -```js -({ - terser: require('terser/package.json').version, // terser version - 'terser-webpack-plugin': require('../package.json').version, // plugin version - 'terser-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 -}); -``` - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - cache: true, - cacheKeys: (defaultCacheKeys, file) => { - defaultCacheKeys.myCacheKey = 'myCacheKeyValue'; - - return defaultCacheKeys; - }, - }), - ], - }, -}; -``` - -### `parallel` - -Type: `Boolean|Number` -Default: `false` - -Use multi-process parallel running to improve the build speed. -Default number of concurrent runs: `os.cpus().length - 1`. - -> ℹ️ Parallelization can speedup your build significantly and is therefore **highly recommended**. - -#### `Boolean` - -Enable/disable multi-process parallel running. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - parallel: true, - }), - ], - }, -}; -``` - -#### `Number` - -Enable multi-process parallel running and set number of concurrent runs. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - parallel: 4, - }), - ], - }, -}; -``` - -### `sourceMap` - -Type: `Boolean` -Default: `false` - -Use source maps to map error message locations to modules (this slows down the compilation). -If you use your own `minify` function please read the `minify` section for handling source maps correctly. - -> ⚠️ **`cheap-source-map` options don't work with this plugin**. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - sourceMap: true, - }), - ], - }, -}; -``` - -### `minify` - -Type: `Function` -Default: `undefined` - -Allows you to override default minify function. -By default plugin uses [terser](https://github.com/terser-js/terser) package. -Useful for using and testing unpublished versions or forks. - -> ⚠️ **Always use `require` inside `minify` function when `parallel` option enabled**. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - 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 }; - }, - }), - ], - }, -}; -``` - -### `terserOptions` - -Type: `Object` -Default: [default](https://github.com/terser-js/terser#minify-options) - -Terser minify [options](https://github.com/terser-js/terser#minify-options). - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - terserOptions: { - ecma: undefined, - warnings: false, - parse: {}, - compress: {}, - mangle: true, // Note `mangle.properties` is `false` by default. - module: false, - output: null, - toplevel: false, - nameCache: null, - ie8: false, - keep_classnames: undefined, - keep_fnames: false, - safari10: false, - }, - }), - ], - }, -}; -``` - -### `extractComments` - -Type: `Boolean|String|RegExp|Function<(node, comment) -> Boolean|Object>|Object` -Default: `false` - -Whether comments shall be extracted to a separate file, (see [details](https://github.com/webpack/webpack/commit/71933e979e51c533b432658d5e37917f9e71595a)). -By default extract only comments using `/^\**!|@preserve|@license|@cc_on/i` regexp condition and remove remaining comments. -If the original file is named `foo.js`, then the comments will be stored to `foo.js.LICENSE`. -The `terserOptions.output.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. - -#### `Boolean` - -Enable/disable extracting comments. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - extractComments: true, - }), - ], - }, -}; -``` - -#### `String` - -Extract `all` or `some` (use `/^\**!|@preserve|@license|@cc_on/i` RegExp) comments. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - extractComments: 'all', - }), - ], - }, -}; -``` - -#### `RegExp` - -All comments that match the given expression will be extracted to the separate file. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - extractComments: /@extract/i, - }), - ], - }, -}; -``` - -#### `Function<(node, comment) -> Boolean>` - -All comments that match the given expression will be extracted to the separate file. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - extractComments: (astNode, comment) => { - if (/@extract/i.test(comment.value)) { - return true; - } - - return false; - }, - }), - ], - }, -}; -``` - -#### `Object` - -Allow to customize condition for extract comments, specify extracted file name and banner. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - extractComments: { - condition: /^\**!|@preserve|@license|@cc_on/i, - filename: (file) => { - return `${file}.LICENSE`; - }, - banner: (licenseFile) => { - return `License information can be found in ${licenseFile}`; - }, - }, - }), - ], - }, -}; -``` - -##### `condition` - -Type: `Boolean|String|RegExp|Function<(node, comment) -> Boolean|Object>` - -Condition what comments you need extract. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - extractComments: { - condition: 'some', - filename: (file) => { - return `${file}.LICENSE`; - }, - banner: (licenseFile) => { - return `License information can be found in ${licenseFile}`; - }, - }, - }), - ], - }, -}; -``` - -##### `filename` - -Type: `String|Function<(string) -> String>` -Default: `${file}.LICENSE` - -The file where the extracted comments will be stored. -Default is to append the suffix `.LICENSE` to the original filename. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - extractComments: { - condition: /^\**!|@preserve|@license|@cc_on/i, - filename: 'extracted-comments.js', - banner: (licenseFile) => { - return `License information can be found in ${licenseFile}`; - }, - }, - }), - ], - }, -}; -``` - -##### `banner` - -Type: `Boolean|String|Function<(string) -> String>` -Default: `/*! For license information please see ${commentsFile} */` - -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. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - extractComments: { - condition: true, - filename: (file) => { - return `${file}.LICENSE`; - }, - banner: (commentsFile) => { - return `My custom banner about license information ${commentsFile}`; - }, - }, - }), - ], - }, -}; -``` - -### `warningsFilter` - -Type: `Function<(warning, source) -> Boolean>` -Default: `() => true` - -Allow to filter [terser](https://github.com/terser-js/terser) warnings. -Return `true` to keep the warning, `false` otherwise. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - warningsFilter: (warning, source) => { - if (/Dropping unreachable code/i.test(warning)) { - return true; - } - - if (/filename\.js/i.test(source)) { - return true; - } - - return false; - }, - }), - ], - }, -}; -``` - -## Examples - -### Cache And Parallel - -Enable cache and multi-process parallel running. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - cache: true, - parallel: true, - }), - ], - }, -}; -``` - -### Preserve Comments - -Extract all legal comments (i.e. `/^\**!|@preserve|@license|@cc_on/i`) and preserve `/@license/i` comments. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - terserOptions: { - output: { - comments: /@license/i, - }, - }, - extractComments: true, - }), - ], - }, -}; -``` - -### Remove Comments - -If you avoid building with comments, set **terserOptions.output.comments** to **false** as in this config: - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - terserOptions: { - output: { - comments: false, - }, - }, - }), - ], - }, -}; -``` - -### Custom Minify Function - -Override default minify function - use `uglify-js` for minification. - -**webpack.config.js** - -```js -module.exports = { - optimization: { - minimizer: [ - new TerserPlugin({ - // Uncomment lines below for cache invalidation correctly - // cache: true, - // cacheKeys: (defaultCacheKeys) => { - // delete defaultCacheKeys.terser; - // - // 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); - }, - }), - ], - }, -}; -``` - -## Contributing - -Please take a moment to read our contributing guidelines if you haven't yet done so. - -[CONTRIBUTING](./.github/CONTRIBUTING.md) - -## License - -[MIT](./LICENSE) - -[npm]: https://img.shields.io/npm/v/terser-webpack-plugin.svg -[npm-url]: https://npmjs.com/package/terser-webpack-plugin -[node]: https://img.shields.io/node/v/terser-webpack-plugin.svg -[node-url]: https://nodejs.org -[deps]: https://david-dm.org/webpack-contrib/terser-webpack-plugin.svg -[deps-url]: https://david-dm.org/webpack-contrib/terser-webpack-plugin -[tests]: https://dev.azure.com/webpack-contrib/terser-webpack-plugin/_apis/build/status/webpack-contrib.terser-webpack-plugin?branchName=master -[tests-url]: https://dev.azure.com/webpack-contrib/terser-webpack-plugin/_build/latest?definitionId=7&branchName=master -[cover]: https://codecov.io/gh/webpack-contrib/terser-webpack-plugin/branch/master/graph/badge.svg -[cover-url]: https://codecov.io/gh/webpack-contrib/terser-webpack-plugin -[chat]: https://img.shields.io/badge/gitter-webpack%2Fwebpack-brightgreen.svg -[chat-url]: https://gitter.im/webpack/webpack -[size]: https://packagephobia.now.sh/badge?p=terser-webpack-plugin -[size-url]: https://packagephobia.now.sh/result?p=terser-webpack-plugin |