2015-09-07 5 views
1

У меня есть проект пользовательского интерфейса с рабочим процессом автоматизации на основе 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.) Итак, зачем перетекать в другие задачи и как я могу это исправить?

+1

попробуйте подвигать определение 'argv' внутри ngconfig задачи – harishr

+0

<попахивает лоб> Да. Вот и все. Спасибо. Позаботьтесь о публикации ответа? – XML

ответ

1

, поскольку переменная argv добавляется за пределы области ngconfig, это повлияет и на выполнение других taks.

пожалуйста переместить его внутри ngconfig задачи