一个简单的问题:
PropTypes是否会增加随附的捆绑包尺寸,并且仅在开发模式下显示?
答案 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