У меня есть проект пользовательского интерфейса с рабочим процессом автоматизации на основе generator-gulp-angular. Я добавил gulp-ng-config
, чтобы выполнять сборки по-разному на основе переменной окружения. Я использую «yargs» пакета, чтобы извлечь флаг среды и сделать его доступным для этой задачи. Но даже при том, что задача должна быть инкапсулирована, мое использование yargs для создания требований к ней теперь активно во всех задачах gulp во всем моем проекте.Использование yargs в задаче * one * 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
.) Итак, зачем перетекать в другие задачи и как я могу это исправить?
попробуйте подвигать определение 'argv' внутри ngconfig задачи – harishr
<попахивает лоб> Да. Вот и все. Спасибо. Позаботьтесь о публикации ответа? – XML