如果使用NODE_ENV=production
构建项目,则react会自动包含bundle中lib的缩小生产版本。相反,非生产构建将包括dev unminified版本的反应。
这是如何实现的?
如果我们安装react:
npm install --save react
然后查看其package.json
的{{1}}密钥,它指向:
main
查看"main": "react.js",
文件的内容只是:
react.js
查看module.exports = require('./lib/React');
我期待看到一个加载缩小版本的条件,但条件似乎做了其他的事情:
./lib/React
在prod和dev版本之间做出什么反应?它似乎并不像我想象的那样与if (process.env.NODE_ENV !== 'production') {
var ReactElementValidator = require('./ReactElementValidator');
createElement = ReactElementValidator.createElement;
createFactory = ReactElementValidator.createFactory;
cloneElement = ReactElementValidator.cloneElement;
}
var __spread = _assign;
if (process.env.NODE_ENV !== 'production') {
var warned = false;
__spread = function () {
process.env.NODE_ENV !== 'production' ? warning(warned, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See fb.me/react-spread-deprecation for more details.') : void 0;
warned = true;
return _assign.apply(null, arguments);
};
}
中的缩小和未明确的构建进行交互。