A Babel transform removing any object properties you tell it to.
Properties in object literals {prop: value}
and assignments obj.prop = value
are removed. Terms with property access in expressions obj.prop
are converted
to undefined
.
The transformation can be used for advanced minification, to remove some properties you know won't be used, but that are not automatically detectable as such.
The following code:
a.removeMe = 0;
a.removeMeToo = i++;
{removeMe: 1, doNotRemoveMe: 2};
is transformed to:
i++;
{doNotRemoveMe: 2};
Try running Babel with DEBUG=remove-props
to see what is being removed.
Add 'transform-remove-props'
to .babelrc
with a regular expression
matching the properties to remove:
{
plugins: [
['transform-remove-props', {regex: /^(removeMe|removeMeToo)$/}]
]
}
The transform is best used after transpiling and bundling, but before lossless minification (such as Uglify).
A regular expression that specifies properties to remove.
Properties of member and call expressions:
a.b.removeMe = 1;
a.b().removeMe = 2;
cannot be removed as a member access or a function may have side-effects.
To get rid of the whole expression (rather than just its right-hand side), pass
a pureMembers
, respectively pureCallees
, option – in the above case
any regular expression matching a.b
.
Pure callees is set to pureFuncsWithUnusualExceptionRegex
from
side-effects-safe by default.
npm install babel-cli babel-plugin-transform-remove-props