我有一个像这样配置的gulp任务:
gulp.task('concatenate_client_js', function(){
return merge2(
gulp.src('./gulp/buildConfig.json')
.pipe(plugins.ngConfig('app.envConfig', {
environment: 'development'
})
),
gulp.src(paths.clientJS)
)
.pipe(plugins.concat('angular_app.js'))
.pipe(gulp.dest(paths.distScripts));
});
然后在其他任务的runSequence中调用此任务(拆分不同的gulp文件)我喜欢这样:
gulp.task('prepare-dev-files', function(callback){
runSequence('clean_dist_dir', 'copy_assets', 'copy_serverFiles', 'copy_bower_css',
['compile_bower_sass', 'concatonate_bower_js'],
'compile_sass', 'concatenate_client_js', 'compile_main_js', callback);
});
gulp.task('prepare-staging-files', ['prepare-dev-files'], function(callback) {
runSequence('clean_test_src', 'copy_unitTestFiles', 'copy_files_for_coverage_report', 'karma_tests_ci', callback)
});
我希望能够根据提供给任务的args或params将environment
配置选项设置为ngConfig
任务中的concatenate_client_js
插件。< / p>
我见过像yargs这样的工具,但我不确定如何在我的情况下使用。我希望能够在runSequence中为我的任务调用提供例如--mode development
的arg,例如。
gulp.task('prepare-staging-files', ['prepare-dev-files --mode staging'], function(callback) {
runSequence('clean_test_src', 'copy_unitTestFiles', 'copy_files_for_coverage_report', 'karma_tests_ci', callback)
});
然后根据传递给任务的mode参数添加一些切换代码。
这可以实现吗? 感谢
答案 0 :(得分:3)
这是可以实现的。您可以使用yargs模块执行此操作。 argv
模块的yargs
属性可用于gulpfile.js
中定义的所有gulp任务。这是一个例子:
var gulp = require('gulp');
var args = require('yargs').argv;
gulp.task('a', function() {
console.log('Arguments for A: ', args.env);
});
gulp.task('b', function() {
console.log('Arguments for B: ', args.env);
});
gulp.task('c', ['a', 'b'], function() {
console.log('Arguments for C: ', args.env);
});
命令$ gulp c --env development
给出以下输出:
14:42:01]开始'a'......
A:开发的论据
[14:42:01]在175μs后完成'a'
[14:42:01]从'b'开始...
B:发展的论据
[14:42:01]67μs后完成'b'
[14:42:01]从'c'开始...
C:开发的论据
[14:42:01]51μs后完成'c'