从Grunt迁移到Gulp

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2014/05/04/grunt-to-gulp/

Grunt是js的自动构建工具,使用很方便,自从接触以后一直在使用。

Gulp是一个新的构建工具,和Grunt的区别没有深入研究,目前只觉得有一个管道流。不过Grunt也会支持流了,应该差不多。

碰巧看到Hexo也将构建工具从Grunt换到Gulp了,很是好奇,所以用了一个小项目来试试Gulp的好处。

环境和配置文件

Grunt有一个Grunt-Cli,而Gulp直接安装Gulp就行了。

npm install -g gulp

而Grunt的配置文件叫Gruntfile.js,而Gulp是gulpfile.js

插件的支持方面来看只要是一般的项目需要的还是有的,如果需求比较小众可能还是需要使用Grunt。

迁移工作

这里以hexo-migrator-cnblogs为例子,原来的Gruntfile如下:

'use strict';

module.exports =function (grunt) {
require('time-grunt')(grunt);
require('load-grunt-tasks')(grunt);

grunt.initConfig({
mochaTest: {
test: {
options: {
reporter:'spec'
},
src: ['test/**/*.js']
}
},
jshint: {
options: {
jshintrc:'.jshintrc',
reporter:require('jshint-stylish')
},
gruntfile: {
src:'Gruntfile.js'
},
lib: {
src: ['lib/**/*.js']
},
test: {
src: ['test/**/*.js']
}
},
watch: {
gruntfile: {
files:'<%= jshint.gruntfile.src %>',
tasks: ['jshint:gruntfile']
},
lib: {
files:'<%= jshint.lib.src %>',
tasks: ['jshint:lib','mochaTest']
},
test: {
files:'<%= jshint.test.src %>',
tasks: ['jshint:test','mochaTest']
}
}
});

grunt.registerTask('default', ['jshint','mochaTest']);
};

主要完成的工作有两项:

  • jshint检查代码
  • mocha运行代码测试

gulp-jshint

jshint的使用广泛程度不用多说,gulp插件自然也是有的。

执行npm install gulp-jshint --save-dev安装以后在配置文件中配置。

var jshint =require('gulp-jshint');
gulp.task('lint',function() {
return gulp.src('./lib/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'));
});

这是只检查了lib目录下的文件,index.js应该也受到检查的,不过直接默认没有多src支持,不能写成gulp.src([src1,scr2])或者gulp.src(src1).src(src2)

解决方案我使用streamqueue,它支持多个src,修改代码为:

gulp.task('lint',function(){
return streamqueue({objectMode:true},
gulp.src('index.js'),
gulp.src('./lib/*.js')
)
.pipe(jshint())
.pipe(jshint.reporter('default'));
});

gulp-mocha

mocha是一个灵活的javascript测试框架,gulp中对应插件为gulp-mocha

安装以后添加配置:

gulp.task('mocha',function() {
return gulp.src(['test/*.js'], { read:false })
.pipe(mocha({ reporter:'list' }))
.on('error', gutil.log);
});

这样配置可以用,但是会抛出一个错误。

[gulp]'mocha' erroredafter13 ms gutilisnot defined

引入gulp-util即可。

感受

说实话,你要说gulp多么多么好用,还是没有什么实感,总耗时上也没有过多差别。

不过应该是我使用的环境本身很简单的缘故吧。

目前就迁移了这么一个项目,其他的暂时不变化吧。

参考资料

Mocha test-runner with gulp
gulp-jshint

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2014/05/04/grunt-to-gulp/

发表评论