Browserify + Globs(多个目标)
这个例子展示了如何使用 browserify 设置一个将多个入口点打包到多个目标的任务。
下面的 js
任务将 src/
下的所有 .js
文件作为入口点进行打包,并将结果写入 dest/
下。
var gulp = require('gulp');
var browserify = require('browserify');
var log = require('gulplog');
var tap = require('gulp-tap');
var buffer = require('gulp-buffer');
var sourcemaps = require('gulp-sourcemaps');
var uglify = require('gulp-uglify');
gulp.task('js', function () {
return gulp.src('src/**/*.js', {read: false}) // 不需要读取文件,因为 browserify 会做这件事。
// 使用 gulp-tap 插件转换文件对象
.pipe(tap(function (file) {
log.info('bundling ' + file.path);
// 用 browserify 的 bundle 流替换文件内容
file.contents = browserify(file.path, {debug: true}).bundle();
}))
// 将流内容转换为缓冲区内容(因为 gulp-sourcemaps 不支持流内容)
.pipe(buffer())
// 加载并初始化 sourcemaps
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(uglify())
// 写入 sourcemaps
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('dest'));
});