gulp-基于流的自动化构建工具--入门

2017-07-10  本文已影响0人  風隨風去

gulp安装

  1. 全局安装 gulp:
$ npm install --global gulp
  1. 作为项目的开发依赖(devDependencies)安装:
$ npm install gulp --save-dev 
  1. 在项目根目录下创建一个名为 gulpfile.js 的文件并导入组件:
var gulp = require('gulp'),//导入gulp modul
      minifycss = require('gulp-minify-css'),//css压缩组件
      concat = require('gulp-concat'),//组合组件
      uglify = require('gulp-uglify'),//js压缩组件
      rename = require('gulp-rename')//重命名组件
      jshint=require('gulp-jshint')   //js检查组件
     notify=require('gulp-notify');   //提示组件
gulp.task('default', function() {
  // 将你的默认的任务代码放在这
});
  1. 运行 gulp:
$ gulp

默认的名为 default 的任务(task)将会被运行,在这里,这个任务并未做任何事情。
想要单独执行特定的任务(task),请输入 gulp <task> <othertask>。

gulp.src

gulp.src('client/templates/*.jade')
  .pipe(jade())//jade是源于nodejs的html模板引擎
  .pipe(minify())//压缩
  .pipe(gulp.dest('build/minified_templates'));//输出到名为build下minified_templates的文件夹
gulp.src('client/js/**/*.js') // 匹配 'client/js/somedir/somefile.js' 并且将 `base` 解析为 `client/js/`
         .pipe(minify()) 
         .pipe(gulp.dest('build')); // 写入 'build/somedir/somefile.js'
gulp.src('client/js/**/*.js', { base: 'client' }) 
         .pipe(minify()) 
         .pipe(gulp.dest('build')); // 写入 'build/js/somedir/somefile.js'

gulp.dest

gulp.src('./client/templates/*.jade')
      .pipe(jade())
      .pipe(gulp.dest('./build/templates'))
      .pipe(minify())
      .pipe(gulp.dest('./build/minified_templates'));

文件被写入的路径是以所给的相对路径根据所给的目标目录计算而来。类似的,相对路径也可以根据所给的 base 来计算。

gulp.task

gulp.task('somename', function() {
  // 做一些事
});
gulp.task('mytask', ['array', 'of', 'task', 'names'], function() {
  // 做一些事
});

注意: 为了任务不在这些前置依赖的任务完成之前运行,请一定要确保你所依赖的任务列表中的任务都使用了正确的异步执行方式:使用一个 回调函数callback,或者返回一个 promise 或 stream。

// 在 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
  });
});
gulp.task('somename', function() {
     var stream = gulp.src('client/**/*.js')
         .pipe(minify())
         .pipe(gulp.dest('build'));
         return stream;
});
var Q = require('q');
gulp.task('somename', function() {
     var deferred = Q.defer();
     // 执行异步的操作
     setTimeout(function() {
        deferred.resolve();
      }, 1);
      return deferred.promise;
});

注意: 默认的,task 将以最大的并发数执行,也就是说,gulp 会一次性运行所有的 task 并且不做任何等待。如果你想要创建一个序列化的 task 队列,并以特定的顺序执行,你需要做两件事:

上一篇 下一篇

猜你喜欢

热点阅读