我在其他地方发布了这个,但坦率地说,这里会是一个更好的地方。
假设您使用 npm 安装 React 15.0.1,import react from 'react' 或 react = require('react') 将运行 ./mode_modules/react/lib/React.js,这是 React 的原始源代码。
React 文档建议您使用 ./mode_modules/react/dist/react.js 进行开发,使用 react.min.js 进行生产。
如果你缩小 /lib/React.js 或 /dist/react.js 用于生产,React 将显示一条警告消息,表明你已经缩小了非生产代码:
Warning: It looks like you're using a minified copy of the development build of React. When deploying React apps to production, make sure to use the production build which skips development warnings and is faster. See fb.me/react-minification for more details.
react-dom、redux、react-redux 的行为类似。 Redux 显示一条警告消息。我相信 react-dom 也可以。
因此,我们明确鼓励您使用来自/dist 的生产版本。
但是,如果你缩小 /dist 版本,webpack 的 UglifyJsPlugin 会报错。
WARNING in ../~/react/dist/react.js
Critical dependencies:
4:478-485 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results.
@ ../~/react/dist/react.js 4:478-4851
您无法避免此消息,因为 UglifyJsPlugin 只能排除 webpack 块,而不是单个文件。
我自己使用开发版和生产版/dist。
- Webpack 要做的工作更少,完成得也更快。 (YRMV)
- React 文档说
/dist/react.min.js 针对生产进行了优化。我没有看到任何证据证明'process.env': { NODE_ENV: JSON.stringify(IS_PRODUCTION ? 'production' : 'development') } plus uglify 的工作与 '/dist/react.min.js` 一样好。我没有看到任何证据证明你得到了相同的结果代码。
- 我从 uglify 收到 1 条警告消息,而不是来自 react/redux 生态系统的 3 条警告消息。
您可以让 webpack 使用 /dist 版本:
resolve: {
alias: {
'react$': path.join(__dirname, 'node_modules', 'react','dist',
(IS_PRODUCTION ? 'react.min.js' : 'react.js')),
'react-dom$': path.join(__dirname, 'node_modules', 'react-dom','dist',
(IS_PRODUCTION ? 'react-dom.min.js' : 'react-dom.js')),
'redux$': path.join(__dirname, 'node_modules', 'redux','dist',
(IS_PRODUCTION ? 'redux.min.js' : 'redux.js')),
'react-redux$': path.join(__dirname, 'node_modules', 'react-redux','dist',
(IS_PRODUCTION ? 'react-redux.min.js' : 'react-redux.js'))
}
}