什么是Grunt?

时间:2015-03-22 04:12:54

标签: javascript automation gruntjs

我试图进入Grunt,我是新手,但我不明白它的实用性。

我知道这是一个任务运行者。我知道它可以用来做一些事情,比如bundle,uglify,jshint,minify等等,任何可以变成脚本任务的东西。

但我不知道这会带来什么好处。几乎所有这些都可以从命令行运行,也就是说你可以使用简单的shell脚本组合它们。在我看来,设置grunt + gruntfiles和编写任务比编写shell脚本更多更多工作,而不是更少。

我对此缺少什么?

2 个答案:

答案 0 :(得分:130)

Grunt基本上是一个构建在NodeJS之上的构建/任务管理器。我称之为NodeJS堆栈相当于ANT for Java。以下是您希望在下面使用grunt的一些常见场景:

  1. 你有一个项目需要缩小javascript文件,并且通常单独生成一个前端版本(如果你在你的后端使用说JAVA)。 (的咕噜-的contrib-丑化
  2. 当您在开发过程中在计算机上保存代码时,您希望浏览器自动重新加载页面(可能看起来很小,但相信我这给我节省了大量时间)。 (实时重新加载
  3. 当开发人员在他的机器上保存代码时,他想要显示一个JS错误/一般最佳实践违规的综合列表。 (的咕噜-的contrib-jshint
  4. 你有一个带有SASS / LESS文件的项目,需要在开发过程中编译成开发人员机器上的CSS文件,例如,每当他保存一个SASS文件时,你希望它自动编译成一个CSS文件,包含在内在你的页面中。 (的咕噜-的contrib-SASS
  5. 您有一个在UI上工作的前端开发人员团队,以及一个在后端工作的后端开发人员团队,您希望前端开发人员使用后端REST API而不需要编译&每次在自己的机器上部署代码。如果您想知道,典型的Web服务器设置是不可能的,因为XHR不允许通过浏览器跨域。 Grunt可以设置一个代理,您可以将grunt连接服务器中自己系统上的XHR请求重定向到另一个系统! ( grunt-contrib-proxy,grunt-contrib-connect
  6. 我不认为你的shell脚本可以做所有这些。总而言之,是的,设置一个Gruntfile.js对于那些几乎没有接触过javascript / / nodeJS新手的人来说是乏味的,我和学习者一样经历了同样的痛苦,但Grunt是一个了不起的软件。请花时间为您的前端项目设置合适的Gruntfile.js,并且感谢上帝让您的生活变得更轻松:)

    Advantage vs shell脚本:

    1. 如果您为每个任务编写shell脚本,那么维护并为每个需求进行自定义都很繁琐。 Gruntfile.js实际上非常简单。有一个你用它来初始化它的配置,指定你想要执行的任务,每个任务的源和目标。

    2. 与Yeoman,Gulp项目种子生成器的集成是另一个需要考虑的主要因素。 Yeoman和Gulp带有Gruntfile.js'智能默认值。对于他的团队中唯一的UI贡献者,这对我来说是无价的!

    3. 对于正在从事前端技术工作的人来说,如果你有多个人在和你合作,那么他们就很容易认识Grunt,这已经有很多关于SO的答案,而不是了解你的shell脚本。这可能是大型团队的一个因素。

    4. Grunt的众多插件扩展了基本功能。除非你的shell脚本非常流行,并且非常模块化,否则我不会看到为它构建插件。这也扩展到在项目中包含新的前端技术。比如说,如果你想明天在你的项目中使用typescript,那么你的shell脚本需要自己加入这个和帐户。使用Grunt,它就像" npm install"一样简单。并添加配置。

答案 1 :(得分:8)

即使我同意Accepted Answer中指出的大多数优点,我仍然需要考虑Keith Cirkel在Why we should stop using Grunt & Gulp中强调的缺点

因此,一些优势是Grunt管理费用的反驳,至少你应该考虑使用Grunt的最终决定。