Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork178
[deprecated] UglifyJS Plugin
License
webpack-contrib/uglifyjs-webpack-plugin
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Please usehttps://github.com/webpack-contrib/terser-webpack-plugin
This plugin usesuglify-js to minify your JavaScript.
This module requires a minimum of Node v6.9.0 and Webpack v4.0.0.
To begin, you'll need to installuglifyjs-webpack-plugin
:
$npm install uglifyjs-webpack-plugin --save-dev
Then add the plugin to yourwebpack
config. For example:
webpack.config.js
constUglifyJsPlugin=require('uglifyjs-webpack-plugin');module.exports={optimization:{minimizer:[newUglifyJsPlugin()],},};
And runwebpack
via your preferred method.
Type:String|RegExp|Array<String|RegExp>
Default:/\.js(\?.*)?$/i
Test to match files against.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({test:/\.js(\?.*)?$/i,}),],},};
Type:String|RegExp|Array<String|RegExp>
Default:undefined
Files to include.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({include:/\/includes/,}),],},};
Type:String|RegExp|Array<String|RegExp>
Default:undefined
Files to exclude.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({exclude:/\/excludes/,}),],},};
Type:Function<(chunk) -> boolean>
Default:() => true
Allowing to filter which chunks should be uglified (by default all chunks are uglified).Returntrue
to uglify the chunk,false
otherwise.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({chunkFilter:(chunk)=>{// Exclude uglification for the `vendor` chunkif(chunk.name==='vendor'){returnfalse;}returntrue;},}),],},};
Type:Boolean|String
Default:false
Enable file caching.Default path to cache directory:node_modules/.cache/uglifyjs-webpack-plugin
.
ℹ️ If you use your own
minify
function please read theminify
section for cache invalidation correctly.
Enable/disable file caching.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({cache:true,}),],},};
Enable file caching and set path to cache directory.
webpack.config.js
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({cache:'path/to/cache',}),],},};
Type:Function<(defaultCacheKeys, file) -> Object>
Default:defaultCacheKeys => defaultCacheKeys
Allows you to override default cache keys.
Default cache keys:
({'uglify-js':require('uglify-js/package.json').version,// uglify version'uglifyjs-webpack-plugin':require('../package.json').version,// plugin version'uglifyjs-webpack-plugin-options':this.options,// plugin optionspath:compiler.outputPath ?`${compiler.outputPath}/${file}` :file,// asset pathhash:crypto.createHash('md4').update(input).digest('hex'),// source file hash});
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({cache:true,cacheKeys:(defaultCacheKeys,file)=>{defaultCacheKeys.myCacheKey='myCacheKeyValue';returndefaultCacheKeys;},}),],},};
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 thereforehighly recommended.
Enable/disable multi-process parallel running.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({parallel:true,}),],},};
Enable multi-process parallel running and set number of concurrent runs.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({parallel:4,}),],},};
Type:Boolean
Default:false
Use source maps to map error message locations to modules (this slows down the compilation).If you use your ownminify
function please read theminify
section for handling source maps correctly.
⚠️ cheap-source-map
options don't work with this plugin.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({sourceMap:true,}),],},};
Type:Function
Default:undefined
Allows you to override default minify function.By default plugin usesuglify-js package.Useful for using and testing unpublished versions or forks.
⚠️ Always userequire
insideminify
function whenparallel
option enabled.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({minify(file,sourceMap){constextractedComments=[];// Custom logic for extract commentsconst{ 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};},}),],},};
Type:Object
Default:default
UglifyJS minifyoptions.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({uglifyOptions:{warnings:false,parse:{},compress:{},mangle:true,// Note `mangle.properties` is `false` by default.output:null,toplevel:false,nameCache:null,ie8:false,keep_fnames:false,},}),],},};
Type:Boolean|String|RegExp|Function<(node, comment) -> Boolean|Object>
Default:false
Whether comments shall be extracted to a separate file, (seedetails).By default extract only comments using/^\**!|@preserve|@license|@cc_on/i
regexp condition and remove remaining comments.If the original file is namedfoo.js
, then the comments will be stored tofoo.js.LICENSE
.TheuglifyOptions.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.
Enable/disable extracting comments.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({extractComments:true,}),],},};
Extractall
orsome
(use/^\**!|@preserve|@license|@cc_on/i
RegExp) comments.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({extractComments:'all',}),],},};
All comments that match the given expression will be extracted to the separate file.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({extractComments:/@extract/i,}),],},};
All comments that match the given expression will be extracted to the separate file.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({extractComments:function(astNode,comment){if(/@extract/i.test(comment.value)){returntrue;}returnfalse;},}),],},};
Allow to customize condition for extract comments, specify extracted file name and banner.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({extractComments:{condition:/^\**!|@preserve|@license|@cc_on/i,filename(file){return`${file}.LICENSE`;},banner(licenseFile){return`License information can be found in${licenseFile}`;},},}),],},};
Type:Boolean|String|RegExp|Function<(node, comment) -> Boolean|Object>
Condition what comments you need extract.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({extractComments:{condition:'some',filename(file){return`${file}.LICENSE`;},banner(licenseFile){return`License information can be found in${licenseFile}`;},},}),],},};
Type:Regex|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
module.exports={optimization:{minimizer:[newUglifyJsPlugin({extractComments:{condition:/^\**!|@preserve|@license|@cc_on/i,filename:'extracted-comments.js',banner(licenseFile){return`License information can be found in${licenseFile}`;},},}),],},};
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 befalse
(no banner), aString
, or aFunction<(string) -> String>
that will be called with the filename where extracted comments have been stored.Will be wrapped into comment.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({extractComments:{condition:true,filename(file){return`${file}.LICENSE`;},banner(commentsFile){return`My custom banner about license information${commentsFile}`;},},}),],},};
Type:Function<(warning, source) -> Boolean>
Default:() => true
Allow to filteruglify-js warnings.Returntrue
to keep the warning,false
otherwise.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({warningsFilter:(warning,source)=>{if(/Droppingunreachablecode/i.test(warning)){returntrue;}if(/filename\.js/i.test(source)){returntrue;}returnfalse;},}),],},};
Enable cache and multi-process parallel running.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({cache:true,parallel:true,}),],},};
Extract all legal comments (i.e./^\**!|@preserve|@license|@cc_on/i
) and preserve/@license/i
comments.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({uglifyOptions:{output:{comments:/@license/i,},},extractComments:true,}),],},};
If you avoid building with comments, setuglifyOptions.output.comments tofalse as in this config:
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({uglifyOptions:{output:{comments:false,},},}),],},};
Override default minify function - useterser for minification.
webpack.config.js
module.exports={optimization:{minimizer:[newUglifyJsPlugin({// Uncomment lines below for cache invalidation correctly// cache: true,// cacheKeys(defaultCacheKeys) {// delete defaultCacheKeys['uglify-js'];//// return Object.assign(// {},// defaultCacheKeys,// { 'uglify-js': require('uglify-js/package.json').version },// );// },minify(file,sourceMap){// https://github.com/mishoo/UglifyJS2#minify-optionsconstuglifyJsOptions={/* your `uglify-js` package options */};if(sourceMap){uglifyJsOptions.sourceMap={content:sourceMap,};}returnrequire('terser').minify(file,uglifyJsOptions);},}),],},};
Please take a moment to read our contributing guidelines if you haven't yet done so.
About
[deprecated] UglifyJS Plugin
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.