使用Gulp输出缩小版本和非缩小版本

时间:2015-12-06 14:24:57

标签: javascript node.js gulp browserify babeljs

我在Gulpfile.js中有这个捆绑器,它运行良好:

var compile = (watch) => {
  var bundler = watchify(browserify('./src/index.js', { debug: true }).transform(babel));

  var rebundle = () => {
    bundler.bundle()
      .on('error', function(err) { console.error(err); this.emit('end'); })
      .pipe(source('lib.js'))
      .pipe(buffer())
      .pipe(sourcemaps.init({ loadMaps: true }))
      .pipe(sourcemaps.write('./'))
      .pipe(gulp.dest('./dist/'));
  };

  if (watch) {
    bundler.on('update', function() {
      console.log('-> bundling...');
      rebundle();
    });
  }

  rebundle();
};

这给了我:arli.js和arli.js.map

但是当试图像这样丑化时:

var compile = (watch) => {
  var bundler = watchify(browserify('./src/index.js', { debug: true }).transform(babel));

  var rebundle = () => {
    bundler.bundle()
      .on('error', function(err) { console.error(err); this.emit('end'); })
      .pipe(source(lib.js))
      .pipe(buffer())
      .pipe(sourcemaps.init({ loadMaps: true }))
      .pipe(sourcemaps.write('./'))
      .pipe(gulp.dest('./dist/'));

    return gulp.src('./dist/lib.js')
      .pipe(rename('lib.min.js'))
      .pipe(sourcemaps.init())
      .pipe(uglify({
        preserveComments: 'license',
      }))
      .pipe(sourcemaps.write('./'))
      .pipe(gulp.dest('./dist/'));
  };

  if (watch) {
    bundler.on('update', function() {
      console.log('-> bundling...');
      rebundle();
    });
  }

  rebundle();
};

这给了我相同的两个文件,但如果我重复这个任务,它也会给我lib.min.js和lib.min.js.map,因为在第一次lib.js不是存在。

我尝试使用run-sequence,但它也一样。

1 个答案:

答案 0 :(得分:2)

您可以尝试使用end回调吗?

var compile = (watch, done) => {
  var bundler = watchify(browserify('./src/index.js', { debug: true }).transform(babel));

  var rebundle = () => {
    bundler.bundle()
      .on('error', function(err) { console.error(err); this.emit('end'); })
      .pipe(source(lib.js))
      .pipe(buffer())
      .pipe(sourcemaps.init({ loadMaps: true }))
      .pipe(sourcemaps.write('./'))
      .pipe(gulp.dest('./dist/')).on('end', function () {
        gulp.src('./dist/lib.js')
          .pipe(rename('lib.min.js'))
          .pipe(sourcemaps.init())
          .pipe(uglify({
            preserveComments: 'license',
          }))
          .pipe(sourcemaps.write('./'))
          .pipe(gulp.dest('./dist/')).on('end', function() {
            done();
          });
      });
  };

  if (watch) {
    bundler.on('update', function() {
      console.log('-> bundling...');
      rebundle();
    });
  }

  rebundle();
};