10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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:578825

评论

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

译文丨伯克利对serverless的看法:简化云编程

华为云开发者联盟

Serverless 云编程 伯克利 无服务器计算 云函数

元宇宙到家,那些「聪明」的设计工具

Zilliz

[转]注释驱动的 Spring cache 缓存介绍

kimmking

java学习中cookie原理

编程江湖

java 编程

大数据开发之Spark Shuffle 原理分析

@零度

大数据 spark

如何使用JDBC API操作数据库

编程江湖

JDBC

青藤:一招制敌!微隔离,让勒索软件不再横行

青藤云安全

ADmobile首席架构师王威:广告业务云上运维最佳实践

阿里云弹性计算

阿里云 弹性计算 年度峰会

Apache Oozie学习笔记(一)

恒生LIGHT云社区

大数据 hadoop 工作流 调度

前端开发代码区域规范分享

@零度

前端开发 代码规范

自动驾驶训练如火如荼,网络带宽跟不上怎么破?

焱融科技

人工智能 自动驾驶 云计算 高性能 文件存储

据说有人面试栽在了Thread类的stop()方法和interrupt()方法上

华为云开发者联盟

高并发 crud Thread类 stop interrupt

运维工程师必备利器|一招实现运维智能化!

云智慧AIOps社区

运维 AIOPS 运维工程师 基础知识 自动化运维

深入解析QUIC协议

拍乐云Pano

WebRTC RTC QUIC QUIC协议

湖仓一体天花板,大数据一站式SQL分析技术实践

华为云开发者联盟

大数据 HetuEngine 湖仓一体 SQL分析 华为云FusionInsight

web技术分享| web的白板工具栏封装

anyRTC开发者

前端 Web 音视频 视频会议 白板

CI/CD制作流程

wong

Docker jenkins ansible kubenetes

网络安全好学吗?手把手教你学metasploit信息收集 网络安全工程师学习资料汇总

学神来啦

利用闭包实现自定义等待方法

FunTester

多线程 并发测试 闭包 FunTester 自定义等待

尚硅谷Docker与微服务实战教程发布

@零度

大数据 dokcer

阿里云刘强:无影云电脑构建云上安全办公室

阿里云弹性计算

弹性计算 年度峰会 无影云电脑

开源走向世界(上):开源构建全球化的舞台丨BDTC 2021

PingCAP

java开发之内存模型面试分享

@零度

JAVA开发 Java内存模型

一文带你看懂分布式软总线在家庭场景的应用

HarmonyOS开发者

HarmonyOS

Linux之文件属性详解

入门小站

Linux

Avue复选框动态赋值不能渲染问题解决方式

泉城老铁

前端 avue

在线JSON转XML工具

入门小站

工具

Towhee,开源的 embedding 框架与社区

Zilliz

数据库 开源 向量检索

vscode中Tasks及Emmet的应用

编程江湖

vscode

静态代理模式——时间都去哪儿了

蝉沐风

设计模式 代理模式

定了!皮皮APP助力电子竞技游戏师职业技能标准发布!

联营汇聚

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