gulp 自动化流程

单元测试、代码覆盖率检测、静态资源伺服
linux 下 watch 报错 解决方法:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

http://javascript.ruanyifeng.com/tool/gulp.html
项目根目录中的gulpfile.js,是Gulp的配置文件。
var gulp = require('gulp');
var uglify = require('gulp-uglify');
gulp.task('minify', function () {//定义任务或任务组(第二个参数为一个任务名数组)(异步调用
gulp.src('js/app.js')//指定源文件产生数据流,使用 !、* 通配符
.pipe(uglify())//将上一步的输出转为当前的uglify()输入,进行链式处理
.pipe(gulp.dest('build'))//输出写入文件(这里省略了文件名),同时继续输出,所以可以链式调用
});

gulp模块的src方法,用于产生数据流。它的参数表示所要处理的文件,这些指定的文件会转换成数据流。参数的写法一般有以下几种形式。

  • js/app.js:指定确切的文件名。
  • js/*.js:某个目录所有后缀名为js的文件。
  • js/**/*.js:某个目录及其所有子目录中的所有后缀名为js的文件。
  • !js/app.js:除了js/app.js以外的所有文件。
  • *.+(js|css):匹配项目根目录下,所有后缀名为js或css的文件。

gulp.task('css', ['greet'], function () {//css任务依赖greet任务,所以css一定会在greet运行完成后再运行。
   // Deal with CSS here
});//task方法的回调函数,还可以接受一个函数作为参数,这对执行异步任务非常有用。
如果一个任务的名字为default,就表明它是"默认任务",在命令行直接输入gulp命令,就会运行该任务。

watch方法用于指定需要监视的文件。一旦这些文件发生变动,就运行指定任务。
gulp.task('watch', function () {
   gulp.watch('templates/*.tmpl.html', ['build']);//任务可以为写成函数形式,watch的返回还可以触发change等事件
});
监控的文件发生变化时(修改、增加、删除文件),
watch方法的返回值会触发change(等)事件。
可以对触发的事件指定回调函数。watcher.on('change', fun)

gulp插件——gulp-load-plugins:加载所有package.json中的gulp模块为一个集合gulpLoadPlugins()