首页 > 解决方案 > PropTypes:对捆绑包大小的影响?

问题描述

简单的问题:

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

标签: reactjsreact-proptypes

解决方案


这取决于您如何构建项目。如果您使用webpack并设置process.env.NODE_ENVproductionthanPropTypes不包括对您的包的整个类型检查

您可以检查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时才会包含from 的整个代码。如果你需要完全(甚至从你的代码中移除,你需要使用一些babel 插件process.env.NODE_ENVproductionShimsPropTypes


推荐阅读