如何使用gulp和browserify输入和输出多个文件

时间:2015-03-24 16:16:17

标签: gulp browserify multipleoutputs

我确信有办法做到这一点,但我找不到它。我想要的是将多个文件传递到browserify并输出多个文件 - 这对于网站有多个SPA的情况很有用,每个SPA都有自己的需求。

说我有app1.jsapp2.js等,每个加载在不同的页面中,并且有独立的require('..')语句。我正在寻找一个类似这样的任务:

gulp.task('browserify', function() {
  return
  gulp.src('src/**/*.js')
  .pipe(browserify) // 
  .pipe(gulp.dest('dist'));
});

知道什么是实现这个目标的简单方法吗?感谢。

1 个答案:

答案 0 :(得分:2)

本周早些时候我偶然发现了这个问题。 "创建多个捆绑包的问题"。这应该有效:

var gulp = require('gulp'),
    source = require('vinyl-source-stream'),
    browserify = require('browserify'),
    es = require('event-stream');

gulp.task('default', function() {
    // Your main files
    var files = [
        './app/main-a.js',
        './app/main-b.js'
    ];
    // Create a stream array
    var tasks = files.map(function(entry) {
        return browserify({ entries: [entry] })
            .bundle()
            .pipe(source(entry))
            .pipe(gulp.dest('./dist')); 
        });
    return es.merge.apply(null, tasks);
});

请不要使用gulp-browserify插件,因为它已被列入黑名单。请改用browserify本身。

与Globs相同:

gulp.task('withglob', function() {
    return glob('./app/main-**.js', function(err, files) {
        var tasks = files.map(function(entry) {
            return browserify({ entries: [entry] })
                .bundle()
                .pipe(source(entry))
                .pipe(rename({
                    extname: '.bundle.js'
                }))
                .pipe(gulp.dest('./dist')); 
            });
        return es.merge.apply(null, tasks);
    })
});

顺便说一句:That's the reason