2016-10-28 3 views
0

Я пишу инструмент cli для узла с commander-plus.Commander-plus с gulp

import program from 'commander-plus'; 

const prompts = ['a', 'b', 'c']; 
program.choose(prompts, (index) => { 
    // never returns; 
}); 

И хочет, чтобы запустить его с задачей глотка, в основном потому, что его удобно и мы загружаем .env переменного, но на развитии только.

import env from 'gulp-env'; 
gulp.task('env',() => { 
    env(); 
}); 

Поначалу я пытался использовать gulp-shell. Я на самом деле использую аналогичный скрипт для запуска nodemon, который отлично работает. Сценарий cli работает отлично, но commander-plus не будет слушать ввод на клавиатуре.

import shell from 'gulp-shell'; 
import gulp from 'gulp'; 

gulp.task('cli', ['env'], shell.task([ 
    'babel-node src/cli', 
])) 

Позже я обнаружил, что либо это то, как оно должно работать, либо, возможно, теперь оно исправлено. https://github.com/sun-zheng-an/gulp-shell/issues/10

Но также, что gulp-shell занесен в черный список и решил попробовать вместо gulp-exec или child_process.exec.

import { exec } from 'child_process'; 
gulp.task('cli', ['env'], done => { 
    exec('babel-node src/server/cli', done); 
}); 

ответ

0

Видимо, gulp-bg является рабочим вариантом. Благодаря этому мы все еще можем продолжать работу над задачами разработчика с помощью gulp и полностью избегать работы с dotenv.

import bg from 'gulp-bg'; 
import gulp from 'gulp'; 

gulp.task('cli', ['env'], bg('node', './src/cli')); 
0

Не уверен, что он квалифицируется как ответ, но я нашел путь с узлом-dotenv. Просто без глотки.

Во-первых у меня есть конфигурационный файл, который выглядит как

// only set default for env 
configExport.env = process.env.NODE_ENV || 'development'; 
// and a lot of other variables 

А потом как в моем сервере и Cli инструмент я загрузить .env только если его необходимо.

import dotenv from 'dotenv' 
import config from '../server/config'; 
if(config.env === 'development'){ 
    dotenv.load(); 
} 

dotenv не будет ошибкой, если .env файл не найден, но причина для дополнительной проверки, если, это я волновалась .env может получить развернутый случайно.

Мы также должны убедиться, что .env не развернут со всеми соответствующими .ignores (.gitignore, modulusignore, .dockerignore), и это должно выполнить эту работу.

Смежные вопросы