【发布时间】:2014-09-09 18:01:15
【问题描述】:
我正在使用 Grunt 来构建一个 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任务:
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 吗?
提前致谢。
【问题讨论】:
标签: javascript node.js gruntjs reactjs browserify