在Gulp中,任务通常是这样的:
gulp.task('my-task', function() {
return gulp.src(options.SCSS_SOURCE)
.pipe(sass({style:'nested'}))
.pipe(autoprefixer('last 10 version'))
.pipe(concat('style.css'))
.pipe(gulp.dest(options.SCSS_DEST));
});
是否有可能将命令行标志传递给gulp(这不是一个任务),并让它在此基础上有条件地运行任务?例如
$ gulp my-task -a 1
然后在gulpfile.js中:
gulp.task('my-task', function() {
if (a == 1) {
var source = options.SCSS_SOURCE;
} else {
var source = options.OTHER_SOURCE;
}
return gulp.src(source)
.pipe(sass({style:'nested'}))
.pipe(autoprefixer('last 10 version'))
.pipe(concat('style.css'))
.pipe(gulp.dest(options.SCSS_DEST));
});
我们希望为不同的环境传递不同的配置文件——一个用于生产、开发和测试。下面是gulp文件中的代码:
//传入标志给gulp来设置环境
//var env = gutil.env.env;
If (typeof gutil.env.env === 'string') {
process.env。NODE_ENV = gutil.env.env;
}
这是app.js文件中的代码:
If (env === 'testing'){
var Config = require('./ Config .testing.js');
var Api = require('./ Api /testing.js')(Config.web);
}
Else if(env === 'dev'){
Config = require('./ Config .dev.js');
Api = require('./ Api /dev.js').Api;
}
其他{
Config = require('./ Config .production.js');
Api = require('./ Api /production.js')(Config.web);
}
然后运行gulp—env=testing
我们希望为不同的环境传递不同的配置文件——一个用于生产、开发和测试。下面是gulp文件中的代码:
//传入标志给gulp来设置环境
//var env = gutil.env.env;
If (typeof gutil.env.env === 'string') {
process.env。NODE_ENV = gutil.env.env;
}
这是app.js文件中的代码:
If (env === 'testing'){
var Config = require('./ Config .testing.js');
var Api = require('./ Api /testing.js')(Config.web);
}
Else if(env === 'dev'){
Config = require('./ Config .dev.js');
Api = require('./ Api /dev.js').Api;
}
其他{
Config = require('./ Config .production.js');
Api = require('./ Api /production.js')(Config.web);
}
然后运行gulp—env=testing
从命令行传递参数
// npm install --save-dev gulp gulp-if gulp-uglify minimist
var gulp = require('gulp');
var gulpif = require('gulp-if');
var uglify = require('gulp-uglify');
var minimist = require('minimist');
var knownOptions = {
string: 'env',
default: { env: process.env.NODE_ENV || 'production' }
};
var options = minimist(process.argv.slice(2), knownOptions);
gulp.task('scripts', function() {
return gulp.src('**/*.js')
.pipe(gulpif(options.env === 'production', uglify())) // only minify in production
.pipe(gulp.dest('dist'));
});
然后大口地跑:
$ gulp scripts --env development
源
如果你正在使用typescript (gulpfile.ts),那么在yargs(基于@Caio Cunha的精彩回答https://stackoverflow.com/a/23038290/1019307和上面的其他评论)中这样做:
安装
npm install --save-dev yargs
typings install dt~yargs --global --save
.ts文件
把这个添加到.ts文件中:
import { argv } from 'yargs';
...
let debug: boolean = argv.debug;
这必须在每个.ts文件中单独完成(即使是导入到gulpfile.ts/js中的工具/任务/项目文件)。
Run
gulp build.dev --debug
或者在npm下将arg传递给gulp:
npm run build.dev -- --debug