【发布时间】:2016-04-22 12:23:40
【问题描述】:
我正在尝试减小我的 React bundle.js 的大小。
我正在尝试使用 Envify 和 Browserify 将 process.env.NODE_ENV 替换为字符串“production”,以便使用 uglifyjs 并删除所有额外的开发代码。
这是我的命令:browserify -t [envify --NODE_ENV production] assets/js/app.js -o assets/js/bundle.js
这样我的 bundle.js 就创建成功了,但它仍然有一些process.env.NODE_ENV 的实例。
我的“app.js”或其他组件中的所有实例都正确替换为“生产”。
...但是在 node_modules 文件夹中的所有我需要的模块中(例如 react 等),实例都不会被替换。
非常感谢任何帮助!谢谢!
************************ 编辑 ************************
JMM 的解决方案成功回答了原始问题,但我仍然遇到问题,因为我使用的是React-Router(我认为)。
我创建了一个简单的例子来说明这种情况。
这是我的 app.js 文件:
var React = require('react');
var ReactDOM = require('react-dom');
var Router = require('react-router').Router;
var Route = require('react-router').Route;
var Example = React.createClass({
render: function(){
console.log(process.env.NODE_ENV);
if (process.env.NODE_ENV === "development") {
console.log('Development Version');
} else {
console.log('Production Version');
}
return <span>Hello World!</span>;
}
});
var AppRoutes = ( <Route name="/" path="/" component={Example} /> );
ReactDOM.render(
(<Router>
{AppRoutes}
</Router>),
document.getElementById('ExampleApp')
);
如果我运行 NODE_ENV=production browserify -t envify assets/js/app.js -o assets/js/bundle.js,我仍然在 bundle.js 中有一些 process.env.NODE_ENV 的实例。
我找到了一种解决方法,只需使用:browserify assets/js/app.js -o assets/js/bundle.js 创建bundle.js,然后使用:NODE_ENV=production envify assets/js/bundle.js > assets/js/bundle2.js 在捆绑包上运行 envify
这解决了我的问题,但我仍然不确定为什么 react-router 不允许 browserify 和 envify 一起工作。
我希望这可以帮助其他有类似问题的人!
【问题讨论】:
标签: reactjs browserify react-router envify