Gulp的目標是取代Grunt
Fractal公司積極參與了數個流行Node.js模塊的開發,它最近發布了一個新的構建系統gulp,希望能夠取代Grunt,成為最流行的JavaScript任務運行器。
根據gulp的文檔,它努力實現的主要特性是:
- 易于使用:采用代碼優于配置策略,gulp讓簡單的事情繼續簡單,復雜的任務變得可管理。
- 高效:通過利用node.js強大的流,不需要往磁盤寫中間文件,可以更快地完成構建。
- 高質量:gulp嚴格的插件指導方針,確保插件簡單并且按你期望的方式工作。
- 易于學習:通過把API降到最少,你能在很短的時間內學會gulp。構建工作就像你設想的一樣:是一系列流管道。
Gulp通過流和代碼優于配置策略來盡量簡化任務編寫的工作。這看起來有點“像jQuery”的方法,把動作串起來創建構建任務。早在UNIX的初 期,流就已經存在了。流在Node.js生態系統中也扮演了重要的角色,因此用gulp編寫任務也可看作是用Node.js編寫任務。當使用流 時,gulp去除了中間文件,只將最后的輸出寫入磁盤,整個過程因此變得更快。gulp采用代碼優于配置的策略,讓簡單的事情繼續簡單,將復雜的任務變得 可管理。
與其他任務運行器一樣,每個任務都可以是一個簡單的工作單元:
var gulp = require('gulp'); var uglify = require('gulp-uglify'); gulp.task('scripts', function() { return gulp .src(['src/js/**/*.js']) .pipe(uglify()) .pipe(gulp.dest('build/js')); });
或者有任務依賴:
gulp.task('default-task', function(){ gulp.run('scripts'); // watch files and run scripts if they change gulp.watch("./src/**/*.js", function(event { gulp.run('scripts'); }); );
關于Grunt,對它的抱怨除了過于冗長,還包括大量的插件做了他們不該做的工作。Mark Goodyear在一篇博客中舉了個例子,Grunt的imagemin插件不僅壓縮圖片,同時還包括緩存功能。他表示,在gulp中,緩存是另一個插件,可以被別的插件使用,這樣就促進了插件的可重用性。
查看gulp的代碼庫活動以及加星關注的人數,可以發現這個構建系統已經開始獲得動力。它同時也引起了JavaScript社區的興趣:Yeoman的首席開發者Addy Osmani,提交了一篇issue,向團隊成員介紹gulp并評估其替換當前構建系統。Sindre Sorhus是Yeoman研發團隊成員和NPM的主要貢獻者,寫了一篇關于gulp的博客并在推ter上提到gulp:“比Grunt速度更快、配置更少”。
原文英文鏈接:Gulp Aiming to Dethrone Grunt
來自:http://www.infoq.com/cn/news/2014/02/gulp