Обычно в Gulp задачи выглядят так:
gulp.task('my-task', function() {
return gulp.src(options.SCSS_SOURCE)
.pipe(sass({style:'nested'}))
.pipe(autoprefixer('last 10 version'))
.pipe(concat('style.css'))
.pipe(gulp.dest(options.SCSS_DEST));
});
Можно ли передать флаг командной строки в gulp (это не задача) и запустить ли он задачи условно на основании этого? Например
$ gulp my-task -a 1
А потом в моем gulpfile.js:
gulp.task('my-task', function() {
if (a == 1) {
var source = options.SCSS_SOURCE;
} else {
var source = options.OTHER_SOURCE;
}
return gulp.src(source)
.pipe(sass({style:'nested'}))
.pipe(autoprefixer('last 10 version'))
.pipe(concat('style.css'))
.pipe(gulp.dest(options.SCSS_DEST));
});
javascript
node.js
gulp
asolberg
источник
источник
process.argv
для доступа к аргументам командной строки.Ответы:
Gulp не предлагает никакой утилиты для этого, но вы можете использовать один из многих парсеров командных аргументов. Мне нравится
yargs
. Должно быть:Вы также можете комбинировать его с
gulp-if
условным потоком потока, что очень полезно для сборки dev и prod:И позвони с
gulp my-js-task
илиgulp my-js-task --production
.источник
npm run gulp
то вы должны использовать его какnpm run gulp -- --production
.редактировать
gulp-util
является устаревшим и должен быть избегать, поэтому рекомендуется использовать minimist вместо, которыйgulp-util
уже используется.Поэтому я изменил некоторые строки в моем gulpfile, чтобы удалить
gulp-util
:оригинал
В моем проекте я использую следующий флаг:
Gulp предлагает объект
gulp.env
для этого. В новых версиях он устарел, поэтому для этого вы должны использовать gulp-util. Задачи выглядят так:Настройка среды доступна во всех подзадачах. Так что я могу использовать этот флаг и для задачи наблюдения:
И моя задача стилей также работает.
Чао Ральф
источник
gulp.env
устарела , как вы можете видеть по сообщению журнала консоли при его запуске. Они просят вас использовать свой собственный парсер и предлагаютyargs
илиminimist
.util.env.theme ? util.env.theme : 'main'
доutil.env.theme || 'main'
. В любом случае +1.gulp-util
используетminimist
библиотеку для разбора аргументов командной строки. Так что если вы используетеgulp-util
, вам не нужна дополнительная библиотека для этой цели. Документ: github.com/substack/minimistВот быстрый рецепт, который я нашел:
gulpfile.js
CLI
Оригинал ссылки (больше не доступен): https://github.com/gulpjs/gulp/blob/master/docs/recipes/pass-params-from-cli.md
Альтернатива с минимистом
Из обновленной ссылки: https://github.com/gulpjs/gulp/blob/master/docs/recipes/pass-arguments-from-cli.md
gulpfile.js
CLI
источник
Есть очень простой способ сделать
on/off
флаги без разбора аргументов.gulpfile.js
это просто файл, который выполняется как любой другой, так что вы можете сделать:И использовать что-то вроде
gulp-if
условно выполнить шагВыполнение
gulp build
даст хороший HTML, аgulp production build
минимизирует его.источник
gulp.task('mytask', function() { if (flags.myflag ) { flaggedtask } else { unflaggedask } });
flags
.Если у вас есть строгие (упорядоченные!) Аргументы, вы можете получить их, просто проверив
process.argv
.Выполните это:
gulp --env production
... однако я думаю, что это слишком строго и не пуленепробиваемо! Итак, я немного поиграл ... и в итоге получил следующую полезную функцию:
Он ест имя аргумента и будет искать его в
process.argv
. Если ничего не было найдено, оно выплевываетnull
. В противном случае, если их нет в качестве следующего аргумента или следующий аргумент является командой, а не значение (мы отличаемся штрихом),true
возвращается. (Это потому, что ключ существует, но там просто нет значения). Если все предыдущие случаи потерпят неудачу, мы получим следующее значение аргумента.> gulp watch --foo --bar 1337 -boom "Foo isn't equal to bar."
Хорошо, пока достаточно ... Вот простой пример использования gulp :
Запустить его
gulp --env production
источник
if (args[0] === '--env' && args[1] === 'production');
по крайней мере вЯ построил плагин для ввода параметров из командной строки в обратный вызов задачи.
https://github.com/stoeffel/gulp-param
Если кто-то обнаружит ошибку или улучшит ее, я буду счастлив объединить PR.
источник
И если вы используете typcript (
gulpfile.ts
), сделайте это дляyargs
(основываясь на превосходном ответе @Caio Cunha https://stackoverflow.com/a/23038290/1019307 и других комментариях выше):устанавливать
.ts
файлыДобавьте это к .ts файлам:
Это должно быть сделано в каждом файле .ts индивидуально (даже
tools/tasks/project
файлы, которые импортированы вgulpfile.ts/js
).Запустить
Или при
npm
прохождении арг через глоток:источник
Передача аргументов из командной строки
Затем выполните глоток с:
Источник
источник
CLI
gulp production
вызывает мою производственную задачу и устанавливает флаг для любых условий.источник
Мы хотели передать другой файл конфигурации для разных сред - один для производства , разработки и тестирования . Это код в файле gulp:
Это код в файле app.js:
А потом запустить его глотком
--env=testing
источник
Прошло некоторое время с тех пор, как этот вопрос был опубликован, но, возможно, это кому-нибудь поможет.
Я использую GULP CLI 2.0.1 (установлен глобально) и GULP 4.0.0 (установлен локально), вот как вы делаете это без каких-либо дополнительных плагинов. Я думаю, что код довольно понятен.
И запустить из консоли:
Затем бегите и посмотрите на различия:
источник