Browserify - multiple entry points

前端 未结 4 1541
夕颜
夕颜 2020-12-13 18:55

I am using Browserify within gulp. I am trying to compile down my tests to a single file as well. But unlike my main app, which I have working just fine, I am having trouble

4条回答
  •  我在风中等你
    2020-12-13 19:02

    A little more complicated example to build files by glob pattern into many files with watching and rebuilding separated files. Not for .coffee, for es2015, but not a big difference:

    var gulp = require("gulp");
    var babelify = require("babelify");
    var sourcemaps = require("gulp-sourcemaps");
    var gutil = require("gulp-util");
    var handleErrors = require("../utils/handleErrors.js");
    var browserify = require("browserify");
    var eventStream = require("event-stream");
    var glob = require("glob");
    var source = require("vinyl-source-stream");
    var buffer = require("vinyl-buffer");
    var watchify = require("watchify");
    
    var SRC_PATH = "./src";
    var BUILD_PATH = "./build";
    
    var bundle = function (bundler, entryFilepath) {
      console.log(`Build: ${entryFilepath}`);
    
      return bundler.bundle()
        .on("error", handleErrors)
        .pipe(source(entryFilepath.replace(SRC_PATH, BUILD_PATH)))
        .pipe(buffer())
        .on("error", handleErrors)
        .pipe(
          process.env.TYPE === "development" ?
            sourcemaps.init({loadMaps: true}) :
            gutil.noop()
        )
        .on("error", handleErrors)
        .pipe(
          process.env.TYPE === "development" ?
            sourcemaps.write() :
            gutil.noop()
        )
        .on("error", handleErrors)
        .pipe(gulp.dest("."))
        .on("error", handleErrors);
    };
    
    var buildScripts = function (done, watch) {
      glob(`${SRC_PATH}/**/[A-Z]*.js`, function (err, files) {
        if (err) {
          done(err);
        }
    
        var tasks = files.map(function (entryFilepath) {
          var bundler = browserify({
            entries: [entryFilepath],
            debug: process.env.TYPE === "development",
            plugin: watch ? [watchify] : undefined
          })
            .transform(
              babelify,
              {
                presets: ["es2015"]
              });
    
          var build = bundle.bind(this, bundler, entryFilepath);
    
          if (watch) {
            bundler.on("update", build);
          }
    
          return build();
        });
    
        return eventStream
          .merge(tasks)
          .on("end", done);
      });
    };
    
    gulp.task("scripts-build", function (done) {
      buildScripts(done);
    });
    
    gulp.task("scripts-watch", function (done) {
      buildScripts(done, true);
    });
    

    Complete code here https://github.com/BigBadAlien/browserify-multy-build

提交回复
热议问题