{"_id":"terser-webpack-plugin-legacy","_rev":"3-46d6f19b88b7f718119223ca9c818da8","name":"terser-webpack-plugin-legacy","dist-tags":{"latest":"1.2.5"},"versions":{"1.2.3":{"name":"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":">= 6.9.0"},"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":"6.9.0"},"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":"996a480d043a7d6c00065bb95eccd5b9d0ede89d","_id":"terser-webpack-plugin-legacy@1.2.3","_nodeVersion":"10.15.0","_npmVersion":"6.8.0","dist":{"integrity":"sha512-ybi+8MpzBPkq4tW1wkl8JKJJM+9teyRX5hCXXlRlP98EwbL8RdZbEg1fBXFQxRzPTKxHZK8bBvuK09DGCFsejA==","shasum":"d438d3a0a8d03138090f899bc274e79de5f67a79","tarball":"https://registry.npmjs.org/terser-webpack-plugin-legacy/-/terser-webpack-plugin-legacy-1.2.3.tgz","fileCount":10,"unpackedSize":48758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgPMUCRA9TVsSAnZWagAAK7IP/282Y70GsuDtGxhAOiM5\nDh03QN1Ga11lH8OLEkPtvVvUSkUYWNcsSVFtZvUXAx33karSgd2x3cIDYD3S\nrflxjsZzpymT2WPOhq1ohAWgkMxclzYdJRpAYBNpvG71qin4AT938sGNMrMg\nOhGo9OGUKEiK2bzuCQ90M3X0jzrwmQt7sme5MVVm5EPvXTvJXTdzAgWqoeOW\nKI8lkcS82Ky+cGVyzNESh6stnvxpEWve/8C/mgIw+WamQToKkYcVl+OoNC2P\nZ0bYzP9r9OXrkJM4WOokPcsLyIwlLcJIaJlgTKholI1RG8ciSYs2IwbRserv\nbXsCDUVtlxxgSJiccDlxnf2QZ2bHd6kxvf6Z4AFP6MTb+tCFeFkk8BBxeFHD\nmzjciDLtAJRA44sngJ5NbtZSq0pgxTR0oWa99yOtmXhobqfiuMLcsJyeOLcv\nX/QE4fMl3zLHgJ9X6xC0eUpcya/yvqYf/O/4kmnWV3HJyktYY23/jyRZJw5a\nQhTTobUjGlFRqTFZizrvdXFBua4aC17HoFW7uE+quJIbAvrCnmXGcQXhSQss\nzPTog4PjrSB7++BFl71b6yfEANikpQzWOfYQ2foD/MMh1QnGLA47o4M28ve1\nQ8OGNWc6l/5ZtLkjP8elD4ahXB7sibjUB1RUYfZvdvie1ae1UbQGvKIhkgJT\nYFdf\r\n=vNvX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFvBghPiwW4yybX0q+Ovvr91dvd/1YzrHchYmRYbu/LCAiA0r6i/7vljarbEQL39aca5qHCTBWgfmHegaeOVhuTUXg=="}]},"maintainers":[{"name":"evilebottnawi","email":"sheo13666q@gmail.com"}],"_npmUser":{"name":"evilebottnawi","email":"sheo13666q@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/terser-webpack-plugin-legacy_1.2.3_1551954707402_0.21382865877757173"},"_hasShrinkwrap":false},"1.2.4":{"name":"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":">= 6.9.0"},"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":"^4.0.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.44.2"},"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":"6.9.0"},"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":"308517899f19d2e8addba450d453aa1cf6573fd9","_id":"terser-webpack-plugin-legacy@1.2.4","_nodeVersion":"10.15.2","_npmVersion":"6.14.8","dist":{"integrity":"sha512-a94K3oIigtnD0K5ZucLf+OWxbSBQDTVHlMmB92cyjkkQnxqWUvOFManrPjSIRZWYkOa4d0uyQ3yAMIggDumDng==","shasum":"9c8fb15b332cf01a786d3ce204131f560d82229f","tarball":"https://registry.npmjs.org/terser-webpack-plugin-legacy/-/terser-webpack-plugin-legacy-1.2.4.tgz","fileCount":10,"unpackedSize":50125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffvRrCRA9TVsSAnZWagAAl1EP+gN+wkedXfkdRLgT0Jho\np95bt3JeL18CBfELTQjC8WaqPqGV4E/+68sc+Tzyv4kvaz98pEFhDSsknvpr\nlfKGn6tB8ULVkzZklvhpXavfbrZs/LrTHlyISOE3bbM9WyAecRKgrVMki6lr\nDwPDFWNuO3YDpZXfzk90mxwCcQNxfw+ohubBwDEe9OO9431DsIlIpv5Mt6hR\nzM+MkZfvKOlq+GQfJ8v2UNXxvw1SDoj+2gLFGNP/lbQAnRl0ww3Z0hezjBoS\nDOBCOUBzWyAwRfyKi3eL2PUELMP2Vk3Pcg2PUy1iovsz5hF0fDdJuRNf35vJ\n8lDd63JsQQY0Wx9i3K4H7zCyZvGDuhiqnkU6ZrSMRljmdHl9Jl9ZNB4TgtA/\n0z32scPwYczCtTbVBdvpy/xznz6k0pSIEs6DuhOB4yvvTOLbp/zOz+3g52xA\nIVL49EnM2C2+X7D6D9n+EkrhX+ubPpJAHBIB/7py3tGSFnr2nV8gtl37tC03\nFfqZ17XivndH01qgnaXAvy92OUr8jwEChfPO0BSxHDxLM9naRHiLK6uygJ7B\nubWArotpDJ30LAUIDgPDTw9C3RYZ/8Uu4SXsRd7m9vIWgtl1R7nJhx7TX5jR\nkWtCWYCGGjqO7DNQPgx9oY+u1hynMRCpckt2iHgeQ9ufnTVWCAU7EKLpQc9I\n4EbC\r\n=PhSY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIElLW8gXJ0TIqkOptykN9uuSV4VSfD4eY1IETvlgs5vCAiEA/DMg36PdYeiWiVH6MNpueX4FqFjQZ6GpnRxgO94dpDI="}]},"maintainers":[{"name":"evilebottnawi","email":"sheo13666q@gmail.com"}],"_npmUser":{"name":"evilebottnawi","email":"sheo13666q@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/terser-webpack-plugin-legacy_1.2.4_1602155627209_0.6883226751285727"},"_hasShrinkwrap":false},"1.2.5":{"name":"terser-webpack-plugin-legacy","version":"1.2.5","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":">= 6.9.0"},"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","core-js":"^2.6.11","find-cache-dir":"^2.0.0","schema-utils":"^1.0.0","serialize-javascript":"^4.0.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.44.2"},"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":"6.9.0"},"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":"2d64dcf893fdd9084012170dfd4893dee0706c30","_id":"terser-webpack-plugin-legacy@1.2.5","_nodeVersion":"10.15.2","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hAoKjlQaUM21gUH9cwpzA67dbYInKwD6ovKa6qO5c3Fh3iV4Rij8NrD/pRub8EmxoY/0xTJQ5kWjC3hSs7bvwQ==","shasum":"1a6bbea806742a979111091afde7fb331a97f13a","tarball":"https://registry.npmjs.org/terser-webpack-plugin-legacy/-/terser-webpack-plugin-legacy-1.2.5.tgz","fileCount":10,"unpackedSize":50308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgDVGCRA9TVsSAnZWagAAu8IP/ixQd22qPlroMn5NbpCn\nU++UwPOJ6JGtcFP+GiWp5Tx3EFCIbAaDy9VHus/4tNXn+7wz1gSuaOTa0J4t\nnSGUlJEOjYAr+mu6U4MBLqutoHGKSD45S+lxGMEy41laPLwckb/kCoibsORZ\nawwIAvt+LTMdtGB0j939fjZjo0hHVjF5q8Ihq+xGUjBHx/6hA/xC+vkc+7Rq\ndzZ+42daSOgHXQBY8qPDseDEFuvbDx3rSh4SqodMfYdlTM1apBoyT5xDQuqs\nIfCt18zFfQcoCeAgCoXracD0pJ2O3qI2KoNGqX6oe0WROdIFe3hognY1f0xi\nGmFKDgP3cN6Iism//3tOVzvlAxCjk8W0uvnKJFSKJ5e134RRCNpeQ2FJ4YBu\nhD66TE5u6knBhem77o6hIcrAjYWKFv4pssVdEag8/xKzIWgDV+p8+TAXuAwx\nx3s8vkUAO7veryUxhkOtrpKb0166lM6+8r9gtuBwOi2D/XR+HFwo+O/eh10B\n4DleNwI4TiD5jOiz92VFCBy8KIjMbKyKKvTOFPgUEXPlxBabOymZ5lCtUDN1\na/jRmnhUSerpfUxzjJ58bTK6dyXafUgazdzRyXZrpTalDR4vh+MazQ3LL+sR\npILuSGk/H38QmYIEBsSgApj+z+/NK35ToTVGmVk0O4o+eYSPLsfycFCn60oD\nbQPj\r\n=lMia\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHKPgwG0yFuxtMPZ+ReOH3iCceCIiFG2F1x5A20ziYdYAiBjjUY3AAig/LHBX7Kk7KiE6lduW4qf7Ij83zDakHY58w=="}]},"maintainers":[{"name":"evilebottnawi","email":"sheo13666q@gmail.com"}],"_npmUser":{"name":"evilebottnawi","email":"sheo13666q@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/terser-webpack-plugin-legacy_1.2.5_1602237765691_0.4581035859991962"},"_hasShrinkwrap":false}},"time":{"created":"2019-03-07T10:31:47.402Z","1.2.3":"2019-03-07T10:31:47.557Z","modified":"2022-05-19T21:31:13.014Z","1.2.4":"2020-10-08T11:13:47.365Z","1.2.5":"2020-10-09T10:02:45.825Z"},"maintainers":[{"name":"evilebottnawi","email":"sheo13666q@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"}