babel-preset-minify
Install
npm install babel-preset-minify --save-dev
Usage
Via .babelrc (Recommended)
.babelrc
{"presets": ["minify"]}
or pass in options -
{"presets": [["minify", {"mangle": {"exclude": ["MyCustomError"]},"unsafe": {"typeConstructors": false},"keepFnName": true}]]}
Via CLI
babel script.js --presets minify
Via Node API
require("@babel/core").transform("code", {presets: ["minify"]});
Options
Two types of options:
- 1-1 mapping with plugin
- The same option passed to multiple plugins
1-1 mapping with plugin
false- disable plugintrue- enable plugin{ …pluginOpts }- enable plugin and pass pluginOpts to plugin
| OptionName | Plugin | DefaultValue |
|---|---|---|
| booleans | transform-minify-booleans | true |
| builtIns | minify-builtins | true |
| consecutiveAdds | transform-inline-consecutive-adds | true |
| deadcode | minify-dead-code-elimination | true |
| evaluate | minify-constant-folding | true |
| flipComparisons | minify-flip-comparisons | true |
| guards | minify-guarded-expressions | true |
| infinity | minify-infinity | true |
| mangle | minify-mangle-names | true |
| memberExpressions | transform-member-expression-literals | true |
| mergeVars | transform-merge-sibling-variables | true |
| numericLiterals | minify-numeric-literals | true |
| propertyLiterals | transform-property-literals | true |
| regexpConstructors | transform-regexp-constructors | true |
| removeConsole | transform-remove-console | false |
| removeDebugger | transform-remove-debugger | false |
| removeUndefined | transform-remove-undefined | true |
| replace | minify-replace | true |
| simplify | minify-simplify | true |
| simplifyComparisons | transform-simplify-comparison-operators | true |
| typeConstructors | minify-type-constructors | true |
| undefinedToVoid | transform-undefined-to-void | true |
The same option passed to multiple plugins
- When multiple plugins require the same option, it's easier to declare it in one place. These options are passed on to two or more plugins.
| OptionName | Plugins |
|---|---|
| keepFnName | Passed to mangle & deadcode |
| keepClassName | Passed to mangle & deadcode |
| tdz | Passed to builtIns, evaluate, deadcode, removeUndefined |
Examples
{"presets": [["minify", {"evaluate": false,"mangle": true}]]}
{"presets": [["minify", {"mangle": {"exclude": ["ParserError", "NetworkError"]}}]]}
{"presets": [["minify", {"keepFnName": true}]]}// is the same as{"presets": [["minify", {"mangle": {"keepFnName": true},"deadcode": {"keepFnName": true}}]]}
You can read more about configuring preset options here