{"_id":"@calitino/terser-webpack-plugin-legacy","_rev":"2-5cdb04bdfc3d82a96c414ad5608afa2c","name":"@calitino/terser-webpack-plugin-legacy","dist-tags":{"latest":"1.2.4"},"versions":{"1.2.3":{"name":"@calitino/terser-webpack-plugin-legacy","version":"1.2.3","description":"Terser plugin for webpack","license":"MIT","repository":{"type":"git","url":"git+https://github.com/webpack-contrib/terser-webpack-plugin.git"},"author":{"name":"webpack Contrib Team"},"homepage":"https://github.com/webpack-contrib/terser-webpack-plugin/tree/webpack-3","bugs":{"url":"https://github.com/webpack-contrib/terser-webpack-plugin/issues"},"main":"dist/cjs.js","engines":{"node":">= 8.9.1"},"scripts":{"start":"npm run build -- -w","prebuild":"npm run clean","build":"cross-env NODE_ENV=production babel src -d dist --ignore 'src/**/*.test.js' --copy-files","clean":"del-cli dist","commitlint":"commitlint","commitmsg":"commitlint -e $GIT_PARAMS","lint":"eslint --cache src test","prepublish":"npm run build","release":"standard-version","security":"npm audit","test:only":"jest","test:watch":"jest --watch","test:coverage":"jest --collectCoverageFrom='src/**/*.js' --coverage","pretest":"npm run lint","test":"npm run test:only","ci:lint":"npm run lint && npm run security","ci:test":"npm run test:only -- --runInBand","ci:coverage":"npm run test:coverage -- --runInBand","ci:lint:commits":"commitlint --from=origin/master --to=${CIRCLE_SHA1}","defaults":"webpack-defaults"},"peerDependencies":{"webpack":">= 3.0.0"},"dependencies":{"cacache":"^11.0.2","find-cache-dir":"^2.0.0","schema-utils":"^1.0.0","serialize-javascript":"^1.4.0","source-map":"^0.6.1","terser":"^3.16.1","webpack-sources":"^1.1.0","worker-farm":"^1.5.2"},"devDependencies":{"@babel/cli":"^7.1.5","@babel/core":"^7.1.6","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","@commitlint/cli":"^7.0.0","@commitlint/config-conventional":"^7.0.1","@webpack-contrib/defaults":"^3.0.0","@webpack-contrib/eslint-config-webpack":"^3.0.0","babel-jest":"^24.0.0","cross-env":"^5.1.3","del":"^3.0.0","del-cli":"^1.1.0","eslint":"^5.5.0","eslint-config-webpack":"^1.2.5","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^3.0.0","husky":"^1.2.1","jest":"^24.0.0","lint-staged":"^8.1.0","memory-fs":"^0.4.1","prettier":"^1.14.0","standard-version":"^5.0.0","uglify-js":"^3.4.3","webpack":"^4.16.3"},"keywords":["uglify","uglify-js","uglify-es","terser","webpack","webpack-plugin","minification","compress","compressor","min","minification","minifier","minify","optimize","optimizer"],"babel":{"presets":[["@babel/preset-env",{"targets":{"node":"8.9.1"},"useBuiltIns":"usage"}]]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.js":["eslint --fix","git add"]},"commitlint":{"extends":["@commitlint/config-conventional"]},"prettier":{"singleQuote":true,"trailingComma":"es5","arrowParens":"always"},"gitHead":"673733150d3b849c046dd397c0ff70fad57b821b","_id":"@calitino/terser-webpack-plugin-legacy@1.2.3","_nodeVersion":"8.9.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-M+SC/PtXXhidZkOL1A+/aqeVzkyKe34LVtKt5t4RXVz27L0i0cSmjdyYsC+vXFEchO9VJMdZS7vA6Darvq+PNQ==","shasum":"7cc47b6a1d8f34eabbece21f15366db69747a22f","tarball":"https://registry.npmjs.org/@calitino/terser-webpack-plugin-legacy/-/terser-webpack-plugin-legacy-1.2.3.tgz","fileCount":10,"unpackedSize":47421,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf/5HCRA9TVsSAnZWagAAZ7oP/RYjPRGRDdyCkPPghPJx\nY1SqD3VC461mVIk6vGnOsuVhCcbJ37L5VHsz97gZjoGRtDbDl0Sb1DjoZnZZ\n2WwbDF1SZLBfcyZjr+pAu7AYVpe+dDdS6EVLhj1vBOGGDOfBI3ZudwSD2wxO\nX7ngZBfWQo4Io5LyeKwUjBPM8OEmIC7tBNqZ2AKdDt+zWFoWnUqaCtP/+hbh\np8HbivXgHdaJLeA8PC3y+V8A3AaNvObGT3yNYt6jnZjxBCiQdhQCBuXby4xC\ndTbpCG8bLVecjn61M+cBHbOyXTsoBz2AM36M0uYhv4ve1nURK4AcD1YYS3zU\nL8HEmkSzh+PAmg5F4rhHhdEh6KigwGyy22Y+R9iyxUAOi7jLAiuRrJk7xBxM\n1OgbmSBewAE8f9KkNr6/PVZprbbSx876bEQ70mmANHgdSNpeA1+oUD3qDcue\nRXZBGHMgCv/FnsjuGZcmK/H4BVnVKXNX56MBA28JiYUeUVLD5IERQqX9lC+V\nY79zbUXQZwc+AWymIYw+gMYsuEgxjFPg2leWbvmnfhDW+PZGn04faJYTEN4g\n+dfxD739IpldYN0UjnrNT85QK3l1eBmuXq+Ex7rWocdPkABrEdxaWT8d47Lc\n82MQ5oAAtPeBXjf4TMUU07sm2gVOdA/GbXR71N0L+sUtIq+1NPP7nFweuExO\nMDPY\r\n=dAbc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWaY+SGPWNBmSC/YNQKrV9oQf8AxZyeXcRU7uCnw7ibwIhAK3xP1Co6TOINr73s6DJ+w3UjeigWFhaMo9rX+V+X3Qd"}]},"maintainers":[{"name":"calitino","email":"simovate@gmail.com"}],"_npmUser":{"name":"calitino","email":"simovate@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/terser-webpack-plugin-legacy_1.2.3_1568669254725_0.1556668468872704"},"_hasShrinkwrap":false},"1.2.4":{"name":"@calitino/terser-webpack-plugin-legacy","version":"1.2.4","description":"Terser plugin for webpack","license":"MIT","repository":{"type":"git","url":"git+https://github.com/webpack-contrib/terser-webpack-plugin.git"},"author":{"name":"webpack Contrib Team"},"homepage":"https://github.com/webpack-contrib/terser-webpack-plugin/tree/webpack-3","bugs":{"url":"https://github.com/webpack-contrib/terser-webpack-plugin/issues"},"main":"dist/cjs.js","engines":{"node":">= 8.9.1"},"scripts":{"start":"npm run build -- -w","prebuild":"npm run clean","build":"cross-env NODE_ENV=production babel src -d dist --ignore 'src/**/*.test.js' --copy-files","clean":"del-cli dist","commitlint":"commitlint","commitmsg":"commitlint -e $GIT_PARAMS","lint":"eslint --cache src test","prepublish":"npm run build","release":"standard-version","security":"npm audit","test:only":"jest","test:watch":"jest --watch","test:coverage":"jest --collectCoverageFrom='src/**/*.js' --coverage","pretest":"npm run lint","test":"npm run test:only","ci:lint":"npm run lint && npm run security","ci:test":"npm run test:only -- --runInBand","ci:coverage":"npm run test:coverage -- --runInBand","ci:lint:commits":"commitlint --from=origin/master --to=${CIRCLE_SHA1}","defaults":"webpack-defaults"},"peerDependencies":{"webpack":"*"},"dependencies":{"cacache":"^11.0.2","find-cache-dir":"^2.0.0","schema-utils":"^1.0.0","serialize-javascript":"^1.4.0","source-map":"^0.6.1","terser":"^3.16.1","webpack-sources":"^1.1.0","worker-farm":"^1.5.2"},"devDependencies":{"@babel/cli":"^7.1.5","@babel/core":"^7.1.6","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","@commitlint/cli":"^7.0.0","@commitlint/config-conventional":"^7.0.1","@webpack-contrib/defaults":"^3.0.0","@webpack-contrib/eslint-config-webpack":"^3.0.0","babel-jest":"^24.0.0","cross-env":"^5.1.3","del":"^3.0.0","del-cli":"^1.1.0","eslint":"^5.5.0","eslint-config-webpack":"^1.2.5","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^3.0.0","husky":"^1.2.1","jest":"^24.0.0","lint-staged":"^8.1.0","memory-fs":"^0.4.1","prettier":"^1.14.0","standard-version":"^5.0.0","uglify-js":"^3.4.3","webpack":"^4.16.3"},"keywords":["uglify","uglify-js","uglify-es","terser","webpack","webpack-plugin","minification","compress","compressor","min","minification","minifier","minify","optimize","optimizer"],"babel":{"presets":[["@babel/preset-env",{"targets":{"node":"8.9.1"},"useBuiltIns":"usage"}]]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.js":["eslint --fix","git add"]},"commitlint":{"extends":["@commitlint/config-conventional"]},"prettier":{"singleQuote":true,"trailingComma":"es5","arrowParens":"always"},"gitHead":"fdfaadd3a49ff4ccd9b4255236ee39aff5d75a04","_id":"@calitino/terser-webpack-plugin-legacy@1.2.4","_nodeVersion":"8.9.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-QTuLp5npC/5IQKP0hJQozNlRLoA2AH0KZ+eqLaaPQdE4dWH3B+HS+l2lpVyYTWdKjamRLJoASyXqGLAW38QFRA==","shasum":"c59822a22959cdeaa7a37f7151c4b92d034ebddc","tarball":"https://registry.npmjs.org/@calitino/terser-webpack-plugin-legacy/-/terser-webpack-plugin-legacy-1.2.4.tgz","fileCount":10,"unpackedSize":47414,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf/7hCRA9TVsSAnZWagAAz4IP/0Ym2LOsbhegrygp+mXw\n2o+nngE1IUiD6dklZVv5Hs/gS2wqmATn+79jZJ+9sWMiVScLIjVPEXTkL290\n24KJtOwVFA2MwCh3+QplCq+eBnCBfagAZ468xQW6fK4y0sPdf4tiGIqz9eYm\nzRunJO+DjjtklaB6eOhgDGvTzIke7ylCJ3ppuvBcAE8OVbFRHbN+pKpQ0e5k\n9hagbeKY6cgZ9mMsjIx+AF1HGuLSgqwZ35ANmhNMfdL/8dm/MQZtt934Fh7F\nEVTQ34kYAmwFv0+inqM8ziKNLIFsCPvF7JyzHWMilTExrphC72rE48z3ckA5\n6Zga8qArOGrNaTxHKSVyFPPRtf2pzSenVRJkLADm5lmL6562npR7ePG7Kj5f\nZbAuB5O7vI6TseSpU0dDPqA+oTW0lBDLPsrtyBKiFrmgmLHnyoQgSHCwfd7O\ndjkpOIKNXtWgfqwhOayiqsTcS9XCrGUomw3RwuEM21Teh00Anz9PXWHvX57N\nPd3Xi5ogzF2W1G3mwkOVvjrss5iWJNTGTVfTMKgIv906mdCHFxN3/us6uErw\nVAWObFqdHnmgMSDTtzxdE1wNDPKawufmPmnuZSfJk/fefeLPOGrl2XbFj0tw\nc1nohCHJrkx+dTZlx1963KPNGan952jDRy1IPBcENyByws3seArbO2zWdrqW\n0y2x\r\n=E2bv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZ+U/FZu7NvYWVAbXitLjGA2WDuF/t/wmrEzkdWeyMZQIgD5YuBUM05A+1DPLVpo7j7/GaXRzCwS++u0w/K/mH9mQ="}]},"maintainers":[{"name":"calitino","email":"simovate@gmail.com"}],"_npmUser":{"name":"calitino","email":"simovate@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/terser-webpack-plugin-legacy_1.2.4_1568669408489_0.7986542913951655"},"_hasShrinkwrap":false}},"time":{"created":"2019-09-16T21:27:34.510Z","1.2.3":"2019-09-16T21:27:34.883Z","modified":"2022-04-04T21:32:49.426Z","1.2.4":"2019-09-16T21:30:08.644Z"},"maintainers":[{"name":"calitino","email":"simovate@gmail.com"}],"description":"Terser plugin for webpack","homepage":"https://github.com/webpack-contrib/terser-webpack-plugin/tree/webpack-3","keywords":["uglify","uglify-js","uglify-es","terser","webpack","webpack-plugin","minification","compress","compressor","min","minification","minifier","minify","optimize","optimizer"],"repository":{"type":"git","url":"git+https://github.com/webpack-contrib/terser-webpack-plugin.git"},"author":{"name":"webpack Contrib Team"},"bugs":{"url":"https://github.com/webpack-contrib/terser-webpack-plugin/issues"},"license":"MIT","readme":"<div align=\"center\">\n  <a href=\"https://github.com/webpack/webpack\">\n    <img width=\"200\" height=\"200\" src=\"https://webpack.js.org/assets/icon-square-big.svg\">\n  </a>\n</div>\n\n[![npm][npm]][npm-url]\n[![node][node]][node-url]\n[![deps][deps]][deps-url]\n[![tests][tests]][tests-url]\n[![cover][cover]][cover-url]\n[![chat][chat]][chat-url]\n[![size][size]][size-url]\n\n# terser-webpack-plugin-legacy\n\nThis plugin uses [terser](https://github.com/terser-js/terser) to minify your JavaScript.\n\n## Requirements\n\nThis module requires a minimum of Node v6.9.0 and Webpack v3.0.0.\n\nWebpack v4 users should use the non-legacy `terser-webpack-plugin`.\n\n## Getting Started\n\nTo begin, you'll need to install `terser-webpack-plugin-legacy`:\n\n```console\n$ npm install terser-webpack-plugin-legacy --save-dev\n```\n\nThen add the plugin to your `webpack` config. For example:\n\n**webpack.config.js**\n\n```js\nconst TerserPlugin = require('terser-webpack-plugin-legacy');\n\nmodule.exports = {\n  optimization: {\n    minimizer: [new TerserPlugin()],\n  },\n};\n```\n\nAnd run `webpack` via your preferred method.\n\n## Options\n\n### `test`\n\nType: `String|RegExp|Array<String|RegExp>`\nDefault: `/\\.m?js(\\?.*)?$/i`\n\nTest to match files against.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        test: /\\.js(\\?.*)?$/i,\n      }),\n    ],\n  },\n};\n```\n\n### `include`\n\nType: `String|RegExp|Array<String|RegExp>`\nDefault: `undefined`\n\nFiles to include.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        include: /\\/includes/,\n      }),\n    ],\n  },\n};\n```\n\n### `exclude`\n\nType: `String|RegExp|Array<String|RegExp>`\nDefault: `undefined`\n\nFiles to exclude.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        exclude: /\\/excludes/,\n      }),\n    ],\n  },\n};\n```\n\n### `chunkFilter`\n\nType: `Function<(chunk) -> boolean>`\nDefault: `() => true`\n\nAllowing to filter which chunks should be uglified (by default all chunks are uglified).\nReturn `true` to uglify the chunk, `false` otherwise.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        chunkFilter: (chunk) => {\n          // Exclude uglification for the `vendor` chunk\n          if (chunk.name === 'vendor') {\n            return false;\n          }\n\n          return true;\n        },\n      }),\n    ],\n  },\n};\n```\n\n### `cache`\n\nType: `Boolean|String`\nDefault: `false`\n\nEnable file caching.\nDefault path to cache directory: `node_modules/.cache/terser-webpack-plugin`.\n\n> ℹ️ If you use your own `minify` function please read the `minify` section for cache invalidation correctly.\n\n#### `Boolean`\n\nEnable/disable file caching.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        cache: true,\n      }),\n    ],\n  },\n};\n```\n\n#### `String`\n\nEnable file caching and set path to cache directory.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        cache: 'path/to/cache',\n      }),\n    ],\n  },\n};\n```\n\n### `cacheKeys`\n\nType: `Function<(defaultCacheKeys, file) -> Object>`\nDefault: `defaultCacheKeys => defaultCacheKeys`\n\nAllows you to override default cache keys.\n\nDefault cache keys:\n\n```js\n({\n  terser: require('terser/package.json').version, // terser version\n  'terser-webpack-plugin': require('../package.json').version, // plugin version\n  'terser-webpack-plugin-options': this.options, // plugin options\n  path: compiler.outputPath ? `${compiler.outputPath}/${file}` : file, // asset path\n  hash: crypto\n    .createHash('md4')\n    .update(input)\n    .digest('hex'), // source file hash\n});\n```\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        cache: true,\n        cacheKeys: (defaultCacheKeys, file) => {\n          defaultCacheKeys.myCacheKey = 'myCacheKeyValue';\n\n          return defaultCacheKeys;\n        },\n      }),\n    ],\n  },\n};\n```\n\n### `parallel`\n\nType: `Boolean|Number`\nDefault: `false`\n\nUse multi-process parallel running to improve the build speed.\nDefault number of concurrent runs: `os.cpus().length - 1`.\n\n> ℹ️ Parallelization can speedup your build significantly and is therefore **highly recommended**.\n\n#### `Boolean`\n\nEnable/disable multi-process parallel running.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        parallel: true,\n      }),\n    ],\n  },\n};\n```\n\n#### `Number`\n\nEnable multi-process parallel running and set number of concurrent runs.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        parallel: 4,\n      }),\n    ],\n  },\n};\n```\n\n### `sourceMap`\n\nType: `Boolean`\nDefault: `false`\n\nUse source maps to map error message locations to modules (this slows down the compilation).\nIf you use your own `minify` function please read the `minify` section for handling source maps correctly.\n\n> ⚠️ **`cheap-source-map` options don't work with this plugin**.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        sourceMap: true,\n      }),\n    ],\n  },\n};\n```\n\n### `minify`\n\nType: `Function`\nDefault: `undefined`\n\nAllows you to override default minify function.\nBy default plugin uses [terser](https://github.com/terser-js/terser) package.\nUseful for using and testing unpublished versions or forks.\n\n> ⚠️ **Always use `require` inside `minify` function when `parallel` option enabled**.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        minify: (file, sourceMap) => {\n          const extractedComments = [];\n\n          // Custom logic for extract comments\n\n          const { error, map, code, warnings } = require('uglify-module') // Or require('./path/to/uglify-module')\n            .minify(file, {\n              /* Your options for minification */\n            });\n\n          return { error, map, code, warnings, extractedComments };\n        },\n      }),\n    ],\n  },\n};\n```\n\n### `terserOptions`\n\nType: `Object`\nDefault: [default](https://github.com/terser-js/terser#minify-options)\n\nTerser minify [options](https://github.com/terser-js/terser#minify-options).\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        terserOptions: {\n          ecma: undefined,\n          warnings: false,\n          parse: {},\n          compress: {},\n          mangle: true, // Note `mangle.properties` is `false` by default.\n          module: false,\n          output: null,\n          toplevel: false,\n          nameCache: null,\n          ie8: false,\n          keep_classnames: undefined,\n          keep_fnames: false,\n          safari10: false,\n        },\n      }),\n    ],\n  },\n};\n```\n\n### `extractComments`\n\nType: `Boolean|String|RegExp|Function<(node, comment) -> Boolean|Object>|Object`\nDefault: `false`\n\nWhether comments shall be extracted to a separate file, (see [details](https://github.com/webpack/webpack/commit/71933e979e51c533b432658d5e37917f9e71595a)).\nBy default extract only comments using `/^\\**!|@preserve|@license|@cc_on/i` regexp condition and remove remaining comments.\nIf the original file is named `foo.js`, then the comments will be stored to `foo.js.LICENSE`.\nThe `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.\n\n#### `Boolean`\n\nEnable/disable extracting comments.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        extractComments: true,\n      }),\n    ],\n  },\n};\n```\n\n#### `String`\n\nExtract `all` or `some` (use `/^\\**!|@preserve|@license|@cc_on/i` RegExp) comments.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        extractComments: 'all',\n      }),\n    ],\n  },\n};\n```\n\n#### `RegExp`\n\nAll comments that match the given expression will be extracted to the separate file.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        extractComments: /@extract/i,\n      }),\n    ],\n  },\n};\n```\n\n#### `Function<(node, comment) -> Boolean>`\n\nAll comments that match the given expression will be extracted to the separate file.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        extractComments: (astNode, comment) => {\n          if (/@extract/i.test(comment.value)) {\n            return true;\n          }\n\n          return false;\n        },\n      }),\n    ],\n  },\n};\n```\n\n#### `Object`\n\nAllow to customize condition for extract comments, specify extracted file name and banner.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        extractComments: {\n          condition: /^\\**!|@preserve|@license|@cc_on/i,\n          filename: (file) => {\n            return `${file}.LICENSE`;\n          },\n          banner: (licenseFile) => {\n            return `License information can be found in ${licenseFile}`;\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n##### `condition`\n\nType: `Boolean|String|RegExp|Function<(node, comment) -> Boolean|Object>`\n\nCondition what comments you need extract.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        extractComments: {\n          condition: 'some',\n          filename: (file) => {\n            return `${file}.LICENSE`;\n          },\n          banner: (licenseFile) => {\n            return `License information can be found in ${licenseFile}`;\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n##### `filename`\n\nType: `String|Function<(string) -> String>`\nDefault: `${file}.LICENSE`\n\nThe file where the extracted comments will be stored.\nDefault is to append the suffix `.LICENSE` to the original filename.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        extractComments: {\n          condition: /^\\**!|@preserve|@license|@cc_on/i,\n          filename: 'extracted-comments.js',\n          banner: (licenseFile) => {\n            return `License information can be found in ${licenseFile}`;\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n##### `banner`\n\nType: `Boolean|String|Function<(string) -> String>`\nDefault: `/*! For license information please see ${commentsFile} */`\n\nThe banner text that points to the extracted file and will be added on top of the original file.\nCan be `false` (no banner), a `String`, or a `Function<(string) -> String>` that will be called with the filename where extracted comments have been stored.\nWill be wrapped into comment.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        extractComments: {\n          condition: true,\n          filename: (file) => {\n            return `${file}.LICENSE`;\n          },\n          banner: (commentsFile) => {\n            return `My custom banner about license information ${commentsFile}`;\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n### `warningsFilter`\n\nType: `Function<(warning, source) -> Boolean>`\nDefault: `() => true`\n\nAllow to filter [terser](https://github.com/terser-js/terser) warnings.\nReturn `true` to keep the warning, `false` otherwise.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        warningsFilter: (warning, source) => {\n          if (/Dropping unreachable code/i.test(warning)) {\n            return true;\n          }\n\n          if (/filename\\.js/i.test(source)) {\n            return true;\n          }\n\n          return false;\n        },\n      }),\n    ],\n  },\n};\n```\n\n## Examples\n\n### Cache And Parallel\n\nEnable cache and multi-process parallel running.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        cache: true,\n        parallel: true,\n      }),\n    ],\n  },\n};\n```\n\n### Preserve Comments\n\nExtract all legal comments (i.e. `/^\\**!|@preserve|@license|@cc_on/i`) and preserve `/@license/i` comments.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        terserOptions: {\n          output: {\n            comments: /@license/i,\n          },\n        },\n        extractComments: true,\n      }),\n    ],\n  },\n};\n```\n\n### Remove Comments\n\nIf you avoid building with comments, set **terserOptions.output.comments** to **false** as in this config:\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        terserOptions: {\n          output: {\n            comments: false,\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n### Custom Minify Function\n\nOverride default minify function - use `uglify-js` for minification.\n\n**webpack.config.js**\n\n```js\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new TerserPlugin({\n        // Uncomment lines below for cache invalidation correctly\n        // cache: true,\n        // cacheKeys: (defaultCacheKeys) => {\n        //   delete defaultCacheKeys.terser;\n        //\n        //   return Object.assign(\n        //     {},\n        //     defaultCacheKeys,\n        //     { 'uglify-js': require('uglify-js/package.json').version },\n        //   );\n        // },\n        minify: (file, sourceMap) => {\n          // https://github.com/mishoo/UglifyJS2#minify-options\n          const uglifyJsOptions = {\n            /* your `uglify-js` package options */\n          };\n\n          if (sourceMap) {\n            uglifyJsOptions.sourceMap = {\n              content: sourceMap,\n            };\n          }\n\n          return require('uglify-js').minify(file, uglifyJsOptions);\n        },\n      }),\n    ],\n  },\n};\n```\n\n## Contributing\n\nPlease take a moment to read our contributing guidelines if you haven't yet done so.\n\n[CONTRIBUTING](./.github/CONTRIBUTING.md)\n\n## License\n\n[MIT](./LICENSE)\n\n[npm]: https://img.shields.io/npm/v/terser-webpack-plugin.svg\n[npm-url]: https://npmjs.com/package/terser-webpack-plugin\n[node]: https://img.shields.io/node/v/terser-webpack-plugin.svg\n[node-url]: https://nodejs.org\n[deps]: https://david-dm.org/webpack-contrib/terser-webpack-plugin.svg\n[deps-url]: https://david-dm.org/webpack-contrib/terser-webpack-plugin\n[tests]: https://img.shields.io/circleci/project/github/webpack-contrib/terser-webpack-plugin.svg\n[tests-url]: https://circleci.com/gh/webpack-contrib/terser-webpack-plugin\n[cover]: https://codecov.io/gh/webpack-contrib/terser-webpack-plugin/branch/master/graph/badge.svg\n[cover-url]: https://codecov.io/gh/webpack-contrib/terser-webpack-plugin\n[chat]: https://img.shields.io/badge/gitter-webpack%2Fwebpack-brightgreen.svg\n[chat-url]: https://gitter.im/webpack/webpack\n[size]: https://packagephobia.now.sh/badge?p=terser-webpack-plugin\n[size-url]: https://packagephobia.now.sh/result?p=terser-webpack-plugin\n","readmeFilename":"README.md"}