PropTypes:对捆绑包大小有影响吗?

时间:2019-03-29 09:58:13

标签: reactjs react-proptypes

一个简单的问题:

PropTypes是否会增加随附的捆绑包尺寸,并且仅在开发模式下显示?

3 个答案:

答案 0 :(得分:2)

这取决于您如何构建项目。如果您使用 webpack 并将process.env.NODE_ENV设置为production,则PropTypes不会将整个类型检查包括在捆绑包中

您可以选中source code,以了解每种环境中捆绑包中将包含什么。

if (process.env.NODE_ENV !== 'production') {
  var ReactIs = require('react-is');

  // By explicitly using `prop-types` you are opting into new development behavior.
  var throwOnDirectAccess = true;
  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);
} else {
  // By explicitly using `prop-types` you are opting into new production behavior.
  module.exports = require('./factoryWithThrowingShims')();
}

factoryWithThrowingShims仅为所有PropTypes方法提供填充,以避免在生产环境中从PropTypes调用某些方法时避免代码中出现异常。这意味着仅当PropTypes/factoryWithTypeCheckers.js不等于process.env.NODE_ENV时,才会包含production中的整个代码。如果您需要完全(甚至是Shims,请从代码中删除PropTypes,则需要使用一些babel plugins

答案 1 :(得分:1)

您将在devDependencies的{​​{1}}中使用PropType。所以不,它不会增加生产量。

答案 2 :(得分:1)

您将使用此babel插件删除不必要的propType。 https://www.npmjs.com/package/babel-plugin-transform-react-remove-prop-types