Передача данных между заданиями 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, и он может быть обогащен псевдонимами и значениями по умолчанию. Ссылка здесь

Другие вопросы по тегам