• Gulp
    • Gulp和Grunt的异同点
    • Gulp特点
    • Gulp示例
    • 参考资料

    Gulp

    前端自动化流程管理。在JavaScript的世界里,Grunt.js是基于Node.js的自动化任务运行器。2013年02月18日,Grunt v0.4.0 发布。Fractal公司积极参与了数个流行Node.js模块的开发,它去年发布了一个新的构建系统Gulp,希望能够取其精华,并取代Grunt,成为最流行的JavaScript任务运行器。

    Gulp和Grunt的异同点

    • 易于使用:采用代码优于配置策略,Gulp让简单的事情继续简单,复杂的任务变得可管理。
    • 高效:通过利用Node.js强大的流,不需要往磁盘写中间文件,可以更快地完成构建。
    • 高质量:Gulp严格的插件指导方针,确保插件简单并且按你期望的方式工作。
    • 易于学习:通过把API降到最少,你能在很短的时间内学会Gulp。构建工作就像你设想的一样:是一系列流管道。

    Gulp特点

    • 易用:Gulp相比Grunt更简洁,而且遵循代码优于配置策略,维护Gulp更像是写代码。
    • 高效:Gulp相比Grunt更有设计感,核心设计基于Unix流的概念,通过管道连接,不需要写中间文件。
    • 高质量:Gulp的每个插件只完成一个功能,这也是Unix的设计原则之一,各个功能通过流进行整合并完成复杂的任务。例如:Grunt的imagemin插件不仅压缩图片,同时还包括缓存功能。他表示,在Gulp中,缓存是另一个插件,可以被别的插件使用,这样就促进了插件的可重用性。目前官方列出的有673个插件。

    Gulp示例

    1. var gulp = require('gulp');
    2. var jshint = require('gulp-jshint');
    3. var concat = require('gulp-concat');
    4. var rename = require('gulp-rename');
    5. var uglify = require('gulp-uglify');
    6. // Lint JS
    7. gulp.task('lint', function() {
    8. return gulp.src('src/*.js')
    9. .pipe(jshint())
    10. .pipe(jshint.reporter('default'));
    11. });
    12. // Concat & Minify JS
    13. gulp.task('minify', function(){
    14. return gulp.src('src/*.js')
    15. .pipe(concat('all.js'))
    16. .pipe(gulp.dest('dist'))
    17. .pipe(rename('all.min.js'))
    18. .pipe(uglify())
    19. .pipe(gulp.dest('dist'));
    20. });
    21. // Watch Our Files
    22. gulp.task('watch', function() {
    23. gulp.watch('src/*.js', ['lint', 'minify']);
    24. });
    25. // Default
    26. gulp.task('default', ['lint', 'minify', 'watch']);

    参考资料

    • gulp
    • gulp fiction: 可视化配置gulp工作流程。
    • 前端工程的构建工具对比 Gulp vs Grunt