跳到主要内容

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

});