同时输出一个压缩过和一个未压缩版本的文件
同时输出压缩过的和未压缩版本的文件可以通过使用 gulp-rename 然后 pipe 到 dest 两次来实现 (一次是压缩之前的,一次是压缩后的):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| var gulp = require('gulp'); var rename = require('gulp-rename'); var uglify = require('gulp-uglify');
var DEST = 'build/';
gulp.task('default', function() { return gulp.src('foo.js') // 这会输出一个未压缩过的版本 .pipe(gulp.dest(DEST)) // 这会输出一个压缩过的并且重命名未 foo.min.js 的文件 .pipe(uglify()) .pipe(rename({ extname: '.min.js' })) .pipe(gulp.dest(DEST)); });
|
gulp-load-plugins 从包依赖项加载gulp插件并将它们附加到您选择的对象上。
gulp-sequence
gulp-sequence 是一个异步转同步的包 可以让gulp 的异步任务 阻塞同步执行
1.给每个任务加上 return 关键字。
2.调用方法时,将方法名作为参数放在 sequence 内使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| var gulp = require('gulp');
var sequence = require('gulp-sequence'); //异步转同步的包
gulp.task('copyFile1',function(){ return gulp.src('file1.txt') .pipe(gulp.dest('./dist/')) })
gulp.task('copyFile2',function(){ return gulp.src('file2.txt') .pipe(gulp.dest('./dist/')) })
gulp.task('default',function(){ return sequence('copyFile1','copyFile2',function(){ console.log('任务完成') }) })
|
运行watch时,会出现顺序执行的错误: Error: The thunkFunction already filled
用了gulp-sequence插件导致的,解决办法参考:https://github.com/teambition/gulp-sequence/issues/2
1 2 3 4 5 6 7
| gulp.task('index-js', gulpSequence(['angular', 'vendor', 'mapbase', 'app', 'app-service']));
修改为:
gulp.task('index-js', function(cb) { gulpSequence(['angular', 'vendor', 'mapbase', 'app', 'app-service'])(cb); });
|
Gulp中的增量编译
参考:https://blog.csdn.net/dong123dddd/article/details/51868574