Передача данных между заданиями gulp без записи на диск
Я пытаюсь аннотировать и минимизировать угловой проект systemjs. Systemjs поставляется с функцией сборки, но она не "gulp-осведомлена". Существует возможность передать строителю опцию минимизации, но для ng-annotate ее нет, поэтому мне нужно сделать gulp вместо меня.
gulp.task('bundle', function () {
var options = {}
builder.buildStatic('./assets/app/app.js', options)
.then(function(data) {
console.log("then called");
// make data available for another task
});
Как я могу сочетать вышеперечисленное с
gulp.task('productionApp', function() {
return [source the output from 'bundle']
.pipe(ngannotate())
.pipe(uglify())
.pipe(gulp.dest('./dist'));
});
Я мог бы просто вывести первую задачу в файл, а затем .src
что в, но это не может быть лучшим способом?
2 ответа
Самый простой способ - сохранить его в буфере (на самом деле, в простом объекте), затем создать поток и продолжить, как если бы src
,
Репозиторий Gulp содержит рецепт, как это делается.
Примечание: вы должны сделать все эти load-*
задачи для запуска в самом начале, вы можете использовать run-sequence
как они сделали или делают их как зависимости от "реальных" задач.
Пакет yargs на npm экспортирует объект argv
, который является очень умным представлением параметров командной строки. Например, вызов
gulp -a test -b 123 my-task
во время бега представлен параметром argv
со значением
{ a: 'test', b: 123 }
который передается в залповое задание my-task
и до него всем своим предшественникам.
Если один из предшественников назначает новую опору argv
argv.newProp = 'newValue'
эта опора будет доступна всем ее преемникам, включая задачу, которую вы действительно хотите выполнить.
Инструкция const { argv } = require('yargs')
должен быть помещен в начало файла gulpfile, и он может быть обогащен псевдонимами и значениями по умолчанию. Ссылка здесь