gulp 和 grunt 的对比

Posted by liveipool on February 23, 2017

gulp 和 grunt 的对比

  • 今天复习了一下gulp,又上网看了一些博客,总结一下gulp和grunt的区别。
  • 易用:Gulp相比Grunt更简洁,而且遵循代码优于配置策略,维护Gulp更像是写代码,而且Gulp遵循CommonJS规范,因此跟写Node程序没有差别。使用 gulp.js,你的构建脚本是代码,而不是配置文件
  • 高效:Gulp相比Grunt更有设计感,核心设计基于Unix流的概念,通过管道连接,不需要写中间文件。
  • 易学:Gulp的核心API只有4个,掌握了5个API就学会了Gulp,之后便可以通过管道流组合自己想要的任务。
  • 高质量:Gulp的每个插件只完成一个功能,这也是Unix的设计原则之一,各个功能通过流进行整合并完成复杂的任务。而Grunt 的 API 设计缺憾,使得许多插件不得不负责一些和其主要任务无关的事情。例如:Grunt的imagemin插件不仅压缩图片,同时还包括缓存功能。在Gulp中,缓存是另一个插件,可以被别的插件使用,这样就促进了插件的可重用性。
  • Grunt试图用配置文件完成所有事,结果就是混乱不堪。规模较大,构建/分发/部署流程较为复杂的项目,其 Gruntfile有多庞杂相信有经历的人都有所体会。而 gulp.js 奉行的是“写程序而不是写配置”,它走的是一种 node way。

流(stream)

  • 流简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具
  • 在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的,而不用关心流的另一头数据的真正流向。流不但可以处理文件,还可以处理动态内存、网络数据等多种数据形式。
  • 而gulp正是通过流和代码优于配置的策略来尽量简化任务编写的工作。这看起来有点“像jQuery”的方法,把动作串起来创建构建任务。流在Node.js生态系统中也扮演了重要的角色,Node将几乎所有IO操作都抽象成了stream的操作。
  • 当使用流时,gulp去除了中间文件,通过管道将多个任务和操作连接起来,只将最后的输出写入磁盘,因此只有一次I/O过程,整个过程因此变得更快。
  • 而使用Grunt的I/O过程中会产生一些中间态的临时文件,一些任务生成临时文件,其它任务可能会基于临时文件再做处理并生成最终的构建后文件。

赞赏码.jpeg