babel-preset-minify
Install
npm install babel-preset-minify --save-dev
Usage
With a configuration file (Recommended)
{
  "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 plugin
- 
true- 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