简单的问题:
PropTypes是否会增加运输包的大小并且仅在开发模式下显示?
这取决于你如何建立你的项目。如果您使用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。
您可以在devDependencies
的package.json
中使用PropTypes。所以不,它不会增加生产构建。
您可以使用此babel插件删除不必要的propTypes。 qazxsw poi