我有一个 UI 项目,具有基于generator-gulp-angular的自动化工作流程。我添加了gulp-ng-config
,以便根据环境变量执行不同的构建。我使用包 'yargs' 来提取环境标志,并使其可用于该任务。但是即使任务应该被封装,我使用 yargs 来创建它的需求现在在我的整个项目中的所有 gulp 任务中都是活跃的。
这是 gulp 任务ngconfig
:
var gulp = require('gulp');
var path = require('path');
var conf = require('./conf');
var gulpNgConfig = require('gulp-ng-config');
var argv = require('yargs')
.usage('This `build` or `serve` task includes an ngConfig task, whose requirements have not been met via arguments. \n LONG USAGE: <command> --environment <"production" or "sit" or "local">.\n SHORT USAGE <command> -e <"production" or "sit" or "local">')
.epilogue('For more information, see the iJoin client README.')
.demand(['e'])
.alias('e', 'environment')
.argv;
gulp.task('ngconfig', function() {
// default config:
var thisConfig = {
environment: argv.environment,
wrap: "(function () { \n 'use strict'; \n return <%= module %> \n })();"
};
gulp.src('gulp/server-config.json')
.pipe(gulpNgConfig('ijoin.apiConfig', thisConfig))
.pipe(gulp.dest(path.join(conf.paths.src, '/app/prebuild')));
});
它作为 的一部分被调用build
,这里:
gulp.task('build', ['ngconfig', 'html', 'fonts', 'other']);
当我们想使用我们的环境变量执行构建时,我们执行
gulp build -e local
而且,一切正常!但它蔓延到我的其他任务中。例如,当我启动本地 API 模拟服务器时,使用:
gulp stubby
它抱怨我没有包含必要的参数:
This `build` or `serve` task includes an ngConfig task, whose requirements have not
been met via arguments.
LONG USAGE: <command> --environment <"production" or "sit" or "local">.
SHORT USAGE <command> -e <"production" or "sit" or "local">
Options:
-e, --environment [required]
For more information, see the iJoin client README.
Missing required arguments: e
但我的意图是那些必要的参数仅在ngconfig
任务中需要。(ngconfig
绝对不是 . 的依赖项stubby
。)那么,为什么会溢出到其他任务中,我该如何解决呢?