在写hexo主题的时候,准备写一个自动编译的gulpfile文件,发现之前看的gulp相关内容并不很清晰,于是重新看了一遍,有了心得体会。

gulp.src

pipe

pipe的意思是管,然后gulp是流(stream),之前使用的时候还不太懂pipe什么用,现在再看一遍终于有了一点感受。pipe可以理解为将流这个东西用管道将其引入别的地方。

举个例子,gulp文档里面的一段

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

首先解释一下,jade是一个模板引擎(现在叫pug),minify是一个压缩js和css的工具(比如说压缩成一行)。那么这段代码的意思就是将一个client/templates/下的所有jade后缀文件pipe到jade这个插件编译一下,编译成css文件,然后pipe到minify插件压缩一下,最后pipe到dest中输出到目标位置。

base

base也是一个比较有用的选项,可以控制base目录,也就是可以可以空输出的目录,详细可以查gulp文档

gulp.watch

可以监听文件的变化,当文件发生了变化可以自己定义一些任务。举一个gulp文档的例子

var watcher = gulp.watch(‘js/*/.js’, [‘uglify’,’reload’]);
watcher.on(‘change’, function(event) {
console.log(‘File ‘ + event.path + ‘ was ‘ + event.type + ‘, running tasks…’);
});

那么意思就是监听js/\**/*.js文件,当发生变化的时候执行uglify和reload任务,并输出一些信息。event.path出发该事件的路径,event.type是该文件的类型。

  • 注意glob路径,之前就是因为这个问题导致我重新看了一边gulp文档,受益匪浅

后记

其实有时侯还很犹豫要不要整理一些看似没必要整理的东西,其实这篇整理的时候主要是整理pipe的意义。有时侯我总以为我能记在脑子里,但是实际上,过一段时间我总是忘掉了。所以我觉得整理还是很有必要的,比如说这次的整理,我重新查了一些文档,感觉自己似乎懂了,但是当我尝试把它写在博客里的时候,我发现我并不是十分的清楚。当把它写完时,我发现我真的清晰了很多。所以不要犹豫是不是内容太简单了,或者浪费时间之类的,整理下来真的能提高很多。