Skip to content

hasLandon/babel-plugin-transform-react-remove-prop-types

 
 

Repository files navigation

babel-plugin-transform-react-remove-prop-types

Remove unnecessary React propTypes from the production build.

npm version npm downloads Build Status

Dependencies DevDependencies

Installation

npm install --save-dev babel-plugin-transform-react-remove-prop-types

The problem solved

Remove unnecessary React propTypes from the production build. You can save bandwidth by removing them.

Example

In

const Baz = () => (
  <div />
);

Baz.propTypes = {
  foo: React.PropTypes.string
};

Out

const Baz = () => (
  <div />
);

Usage

Via .babelrc (Recommended)

.babelrc

without options:

{
  "env": {
    "production": {
      "plugins": ["transform-react-remove-prop-types"]
    }
  }
}

with options:

{
  "env": {
    "production": {
      "plugins": [["transform-react-remove-prop-types", {"mode": "wrap"}]]
    }
  }
}

Via CLI

babel --plugins transform-react-remove-prop-types script.js

Via Node API

without options:

require('babel-core').transform('code', {
  plugins: [
    'transform-react-remove-prop-types',
  ],
});

with options:

require('babel-core').transform('code', {
  plugins: [
    [
      'transform-react-remove-prop-types',
      {mode: 'wrap'},
    ],
  ],
});

Options

mode

  • remove (default): the propTypes definitions are removed from the source code.
  • wrap: the propTypes definitions are wrapped with the following code:
if (process.env.NODE_ENV !== "production") {
  // ...
}

The wrap mode is targeting react libraries like material-ui. It's not intended to be used in userland.

License

MIT

About

Remove unnecessary React propTypes from the production build. 🎈

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%