理一理gulp的一些常用方法

img

以前用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(压缩图片)

等等。