[英]Set gulp tasks depending on NODE_ENV
有没有办法根据设置的NODE_ENV
指定NODE_ENV
任务?
例如在我的package.json
文件中,我有类似的内容:
"scripts": {
"start": "gulp"
}
我有多个gulp
任务
gulp.task('development', function () {
// run dev related tasks like watch
});
gulp.task('production', function () {
// run prod related tasks
});
如果我设置NODE_ENV=production npm start
,我可以指定只运行gulp production
吗? 或者有没有更好的方法来做到这一点?
在默认的 gulp 任务中使用单个三元组,您可以使用以下内容:
gulp.task('default',
[process.env.NODE_ENV === 'production' ? 'production' : 'development']
);
然后,您将能够在package.json
保留单个gulp
命令,并像您说的那样使用它:
NODE_ENV=production npm start
您的NODE_ENV
变量的任何其他值都将启动development
任务。
你可以使用一个对象,允许多个任务,避免当然做一个高级的用法if
树木地狱:
var tasks = {
development: 'development',
production: ['git', 'build', 'publish'],
preprod: ['build:preprod', 'publish:preprod'],
...
}
gulp.task('default', tasks[process.env.NODE_ENV] || 'fallback')
请记住,当提供一系列任务时,它们将并行运行。
让您的第一个 gulp 任务根据process.env.NODE_ENV
值运行其他 gulp 任务。
gulp.task('launcher', function(){
switch (process.env.NODE_ENV){
case 'development':
// Run dev tasks from here
break;
case 'production':
// Run prod tasks
break;
}
});
另一种简单的方法可能是
gulp.task('set-dev-env', function () {
return process.env.NODE_ENV = 'development';
});
gulp.task('set-prod-env', function () {
return process.env.NODE_ENV = 'production';
});
gulp.task('development', ['set-dev-env'], function () {
// your code
});
gulp.task('production', ['set-prod-env'], function () {
// your code
});
运行gulp production
或gulp development
。
您也可以使用gulp-mode插件。
用法:
var gulp = require('gulp');
var mode = require('gulp-mode')();
var uglify = require('gulp-uglify');
gulp.task('default', function() {
gulp.src('src/*.js')
.pipe(mode.production(uglify()))
.pipe(gulp.dest('dist'));
});
或者
var isProduction = mode.production();
if (isProduction) {
console.log("Production mode");
}
开始构建为:
gulp build --production
对于“npm run-script”用例:
package.json :-
"scripts": {
"devbld": "gulp build --development",
"prodbld": "gulp build --production",
}
$ npm run devbld
$ npm run prodbld
if (process.env.NODE_ENV === "production")
// whatever
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.