写点什么

Gulp 的目标是取代 Grunt

  • 2014-02-14
  • 本文字数:1108 字

    阅读完需:约 4 分钟

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 的博客并在Twitter 上提到gulp:“比Grunt 速度更快、配置更少”。

原文英文链接: Gulp Aiming to Dethrone Grunt


感谢梅雪松对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-02-14 09:578427

评论

发布
暂无评论
发现更多内容

数据预处理和特征工程-特征选择-Wrapper包装法

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

2022-11-14:rust语言,请使用过程宏给结构体AAA生成结构体AAABuilder和创建AAABuilder实例的方法。 宏使用如下: #[derive(Builder)] pub stru

福大大架构师每日一题

rust 福大大 过程宏

指标体系搭建中需要规避的问题

穿过生命散发芬芳

指标体系 11月月更

湖仓一体电商项目(九):业务实现之编写写入DIM层业务代码

Lansonli

湖仓一体电商项目 11月月更

自制操作系统日记(5):跳转到C语言执行

操作系统

我的react面试题整理2(附答案)

beifeng1996

React

React源码分析1-jsx转换及React.createElement

goClient1992

React

初始Java诊断工具-Arthas

石臻臻的杂货铺

Java Arthas 11月月更

IO原理(一):从BIO到NIO

苏格拉格拉

Linux io nio 多路复用

开发和学习时需要造一些kafka消息,于是写了段脚本实现,在这里记录备忘,后面会常用到

程序员欣宸

kafka 11月日更

面试官:React怎么做性能优化

beifeng1996

React

CSS 定位

默默的成长

CSS 前端 11月月更

算法题学习---删除链表的倒数第n个节点

桑榆

算法题 11月月更

透视用户需求深挖服务潜力:2022中国商业查询行业洞察

易观分析

商业 查询

一年前端面试打怪升级之路

loveX001

JavaScript

MySQL事务的隔离级别以及脏读、幻读和不可重复读

闫同学

MySQL 事务 11月月更

ISO 8601持续时间格式

HoneyMoose

这些js原型及原型链面试题你能做对几道

loveX001

JavaScript

CSS高级技巧

默默的成长

CSS 前端 11月月更

我的react面试题笔记整理(附答案)

beifeng1996

React

面试官让你说说react状态管理?

beifeng1996

React

OWASP API安全漏洞类型

阿泽🧸

11月月更 OWASP API

SpringBoot3正式版将于11月24日发布:都有哪些新特性?

艾小仙

Java spring-boot spring、

Linux中传输文件如何做到又快又安全?同学,scp命令了解一下!

wljslmz

Linux 运维 scp 11月月更

倒计时3天!银行APP用户体验外滩峰会嘉宾阵容抢先看!

易观分析

App 银行

湖仓一体电商项目(十):业务实现之编写写入DWD层业务代码

Lansonli

湖仓一体 11月月更

【Dubbo源码】SPI机制源码解析

石臻臻的杂货铺

dubbo 11月月更

python小知识-单元测试

AIWeker

Python python小知识 11月月更

湖仓一体电商项目(十一):编写写入DWS层业务代码

Lansonli

湖仓一体电商项目 11月月更

面试官:说说Event Loop事件循环、微任务、宏任务

loveX001

JavaScript

前端面试如何回答,这些题目或许可以给你一些提示

loveX001

JavaScript

Gulp的目标是取代Grunt_JavaScript_João Paulo Marques_InfoQ精选文章