我正在使用Grunt构建一个 React 项目,并且我想要“开发”和“生产”风格。正如react文档所说:
要在生产模式下使用 React,请将环境变量 NODE_ENV 设置为生产。建议使用 UglifyJS 等执行死代码消除的压缩器来完全删除开发模式中存在的额外代码。
我是使用 grunt、browserify 和其他东西的新手,但让我们看看。我遇到的第一个问题是 envify,我将它用作转换:
browserify: {
options: {
transform: ['reactify'],
extensions: ['.jsx']
},
dev:{
options: {
watch: true //Uses watchify (faster)
},
src: ['js/app.js'],
dest: 'js/bundle.js'
},
/**
* To use React in production mode, set the environment variable NODE_ENV to production.
* A minifier that performs dead-code elimination such as UglifyJS is
* recommended to completely remove the extra code present in development mode.
**/
prod: {
options: {
transform: ['envify'] //How to set up NOD_ENV='production' ?
},
src: ['js/app.js'],
dest: 'js/bundle.js'
}
},
好的,做 grunt:dev 工作得很好。所以当运行 grunt:prod... 我怎样才能设置 NODE_ENV: 'production'?我的意思是,我知道我将“envify”作为转换传递,但是......不知道如何使用它。
在此之后,我还有一个丑陋的任务:
uglify: {
prod: {
files: {
'js/bundle.min.js': ['js/bundle.js']
}
}
}
所以在调用 grunt:prod 之后,它创建的是两个文件(bundle.js
和bundle-min.js
)。在生产中,我只想拥有bundle.min.js
. 我知道我可以做到:
js/bundle.js': ['js/bundle.js']
但是嗯,我不知道是否有办法将它重命名为 bundle.min.js,我想是这样......问题是在 html 中我有:
<script src="js/bundle.js"></script>
这里还有一个技巧可以让它接受bundle.js或bundle.min.js吗?
提前致谢。