2

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

假设我有app1.js,app2.js等,每个都加载到不同的页面并具有独立的require('..')语句。我正在寻找执行以下操作的任务:

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

知道什么是完成此任务的简单方法吗?谢谢。

4

1 回答 1

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它自己。

与 Glob 相同:

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);
    })
});

顺便说一句:这就是原因

于 2015-03-25T08:21:11.233 回答