首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Gulp.js将流保存到多个目标?

如何使用Gulp.js将流保存到多个目标?
EN

Stack Overflow用户
提问于 2014-02-22 15:55:41
回答 5查看 42.5K关注 0票数 65
代码语言:javascript
复制
const gulp = require('gulp');
const $ = require('gulp-load-plugins')();
const source = require('vinyl-source-stream');
const browserify = require('browserify');

gulp.task('build', () =>
  browserify('./src/app.js').bundle()
    .pipe(source('app.js'))
    .pipe(gulp.dest('./build'))       // OK. app.js is saved.
    .pipe($.rename('app.min.js'))
    .pipe($.streamify($.uglify())
    .pipe(gulp.dest('./build'))       // Fail. app.min.js is not saved.
);

当file.contents是流时,当前不支持到多个目标的管道。此问题的解决方法是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-02-22 17:08:38

目前,当使用file.contents作为流时,您必须为每个dest使用两个流。这可能会在未来得到修复。

代码语言:javascript
复制
var gulp       = require('gulp');
var rename     = require('gulp-rename');
var streamify  = require('gulp-streamify');
var uglify     = require('gulp-uglify');
var source     = require('vinyl-source-stream');
var browserify = require('browserify');
var es         = require('event-stream');

gulp.task('scripts', function () {
    var normal = browserify('./src/index.js').bundle()
        .pipe(source('bundle.js'))
        .pipe(gulp.dest('./dist'));

    var min = browserify('./src/index.js').bundle()
        .pipe(rename('bundle.min.js'))
        .pipe(streamify(uglify())
        .pipe(gulp.dest('./dist'));

    return es.concat(normal, min);
});

编辑:这个bug现在在吞咽中被修正了。你的原始帖子中的代码应该可以正常工作。

票数 37
EN

Stack Overflow用户

发布于 2014-11-23 19:46:01

我也面临着类似的问题,我希望在lint、uglify和minify任务之后,可以将gulp源代码复制到多个位置。我最终解决了这个问题,如下所示

代码语言:javascript
复制
gulp.task('script', function() {
  return gulp.src(jsFilesSrc)
    // lint command
    // uglify and minify commands
    .pipe(concat('all.min.js'))
    .pipe(gulp.dest('build/js')) // <- Destination to one location
    .pipe(gulp.dest('../../target/build/js')) // <- Destination to another location
});
票数 35
EN

Stack Overflow用户

发布于 2017-01-24 01:31:10

对于向多个目的地广播更新的情况,在目的地数组上循环gulp.dest命令效果很好。

代码语言:javascript
复制
var gulp = require('gulp');

var source = './**/*';

var destinations = [
    '../foo/dest1',
    '../bar/dest2'
];

gulp.task('watch', function() {
    gulp.watch(source, ['sync']);
});

gulp.task('sync', function (cb) {
    var pipeLine = gulp.src(source);

    destinations.forEach(function (d) {
        pipeLine = pipeLine.pipe(gulp.dest(d));
    });

    return pipeLine;
});
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21951497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档