javascript – Gulp Bundle浏览多个文件

所以我有一个简单的gulp任务函数,它目前将我的main.jsx转换为main.js文件:

gulp.task("bundle", function () {
    return browserify({
        entries: "./app/main.jsx",
        debug: true
    }).transform(reactify)
        .bundle()
        .pipe(source("main.js"))
        .pipe(gulp.dest("app/dist"))
});

我想知道是否可以在这个gulp.task中放置多个bundle?
我理想的结果是能够做到:

> main.jsx到main.js
> otherPage.jsx到otherPage.js
> otherPage2.jsx到otherPage2.js

一气呵成的任务.

我搜索了onliine但似乎找不到任何相关的内容,感谢任何帮助或建议,谢谢你提前.

解决方法:

如果要为每个文件创建一个包,需要遍历各个文件,为每个文件创建一个流,然后合并这些流(使用merge-stream):

var merge = require('merge-stream');

gulp.task("bundle", function () {
  var files = [ "main", "otherPage", "otherPage2" ];
  return merge(files.map(function(file) {
    return browserify({
        entries: "./app/" + file + ".jsx",
        debug: true
    }).transform(reactify)
        .bundle()
        .pipe(source(file + ".js"))
        .pipe(gulp.dest("app/dist"))
  }));
});

以上要求您手动将文件列表维护为数组.也可以编写一个任务,将所有.jsx文件捆绑在app目录中,而不必维护文件的显式数组.您只需要glob包来确定您的文件数组:

var merge = require('merge-stream');
var glob = require('glob');
var path = require('path');

gulp.task("bundle", function () {
  var files = glob.sync('./app/*.jsx');
  return merge(files.map(function(file) {
    return browserify({
        entries: file,
        debug: true
    }).transform(reactify)
        .bundle()
        .pipe(source(path.basename(file, '.jsx') + ".js"))
        .pipe(gulp.dest("app/dist"))
  }));
});
上一篇:javascript – 在PyCharm中禁用React道具的自动{}插入


下一篇:javascript – 在React中的现有状态转换错误期间无法更新