插件地址: https://github.com/contra/gulp-concat
插件安装:
npm install --save-dev gulp-concat
插件使用
var concat = require('gulp-concat'); gulp.task('scripts', function() { return gulp.src('./lib/*.js') .pipe(concat('all.js')) //all.js 指代合并后的文件,合并后的内容会覆盖all.js 原有内容。 .pipe(gulp.dest('./dist/')); });
此外,在文件内容合并过程中,会根据glup.src函数中 获取到 的文件的顺序来合并文件,如下例子,file3.js 的文件 会在 file1.js 文件内容之前,file1也会在file2之前。
var concat = require('gulp-concat'); gulp.task('scripts', function() { return gulp.src(['./lib/file3.js', './lib/file1.js', './lib/file2.js']) .pipe(concat('all.js')) .pipe(gulp.dest('./dist/')); });
如果想修改Newline;可以给concat添加第二个参数,例子如下;
.pipe(concat('main.js', {newLine:';'}))
如果想指定 新的工作目录(CWD) , 文件路径(path) ,文件描述器(vinyl) ,你可以指定第一个参数为一个对象;
注释:Vinyl 可以看做一个文件描述器,通过它可以轻松构建单个文件的元数据(metadata object)描述对象。依旧是来个例子简洁明了:
//ch2-demom1
var Vinyl = require('vinyl');var jsFile = new Vinyl({ cwd:
cwd:'/', base:
base:'/test/', path:
path:'/test/file.js', contents:
contents:new Buffer('abc')});
});
示例如下:
gulp.task('scripts', function() { return gulp.src(['./lib/file3.js', './lib/file1.js', './lib/file2.js']) .pipe(concat({ path: 'new.js', stat: { mode: 0666 }})) // stat 参数是用来设置 concat() 之后的文件的权限的,mode后面的数值就是权限代码。 .pipe(gulp.dest('./dist')); });
Source maps
var gulp = require('gulp'); var concat = require('gulp-concat'); var sourcemaps = require('gulp-sourcemaps'); gulp.task('javascript', function() { return gulp.src('src/**/*.js') .pipe(sourcemaps.init()) //初始化sourcemap .pipe(concat('all.js')) .pipe(sourcemaps.write()) //all.js 内写入sourcemap文件内容 如果要在 .map.js中写入,则为:sourcemaps.write("./").pipe(gulp.dest('dist'));});