本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: 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/