理一理gulp的一些常用方法
以前用gulp的时候写过一篇关于当时的一些使用,这次再把常用的一些命令捋一捋
gulp常用的几个命令:
gulp.src()用来获取文件,获取多个文件时可以写成数组形式。
gulp.dest()写文件
stream.pipe(destination, [options]),.pipe()用于将这个可读流和destination目标可写流连接起来,传入这个流中的数据将会写入到destination流中。通过在必要时暂停和恢复流,来源流和目的流得以保持同步。
gulp.watch()监视文件变化,若监视文件有变化,则执行相应任务,如:
gulp.task('uglify',function(){
//do something
});
gulp.task('reload',function(){
//do something
});
gulp.watch('js/**/*.js', ['uglify','reload']);
gulp.task()用来定义任务。任务依赖:gulp.task(‘default’, [‘one’, ‘two’, ‘three’]);想要执行’one’,’two’,’three’三个任务,定义一个依赖这三个任务的空任务,然后执行这个任务就可以了。如果后面几个任务有依赖的话,会先执行依赖的任务,但如果如果某个任务依赖的任务是异步的话,gulp并不会等待那个异步任务完成,而是会接着执行后续的任务。
那怎么办呢?官网给出了三种解决方法:
1.在异步操作完成后执行一个回调
// 在 shell 中执行一个命令
var exec = require('child_process').exec;
gulp.task('jekyll', function(cb) {
// 编译 Jekyll
exec('jekyll build', function(err) {
if (err) return cb(err); // 返回 error
cb(); // 完成 task
});
});
2.定义任务时返回一个流对象
gulp.task('somename', function() {
var stream = gulp.src('client/**/*.js')
.pipe(minify())
.pipe(gulp.dest('build'));
return stream;
});
3.返回一个promise对象
var Q = require('q');
gulp.task('somename', function() {
var deferred = Q.defer();
// 执行异步的操作
setTimeout(function() {
deferred.resolve();
}, 1);
return deferred.promise;
});
以上,大概有这些:gulp.src(),gulp.dest(),gulp.task(),gulp.watch(),然后就是一些常见的插件了
如gulp-rename(重命名),
gulp-uglify(压缩js),
gulp-jshint(检查js代码),
gulp-contact(合并文件),
gulp-minify-css(压缩css),
gulp-minify-html(压缩html),
gulp-imagemin(压缩图片)
等等。