Grunt有什么用?


77

我正在尝试进入Grunt,这是我的新手,但我不了解它的用途。

我了解这是一个任务执行者。我了解它可以用于执行诸如bundle,uglify,jshint,minify等之类的操作,并且可以将其转换为脚本任务。

但是我看不出这样做有什么好处。无论如何,几乎所有这些都可以从命令行运行,也就是说,您可以使用简单的shell脚本将它们组合在一起。在我看来,设置grunt + gruntfiles和编写任务比编写shell脚本需要更多的工作,而不是更少。

我对此有何遗漏?


2
grunt使grunt工作脱离了项目。任务运行javascript优化程序,css lint等。编写自定义的shell脚本并不理想。相比之下,设置咕unt声相当容易。

Answers:


140

Grunt基本上是在NodeJS之上编写的构建/任务管理器。我将其称为ANT for Java的NodeJS堆栈。以下是一些您想在下面使用grunt的常见方案:

  1. 您有一个项目,其中包含需要缩小的javascript文件,并且通常会单独生成一个前端构建(以防您将JAVA用作后端)。(grunt-contrib-uglify
  2. 在开发过程中将代码保存在计算机上时,您希望浏览器自动重新加载页面(可能看起来很小,但是相信我,这节省了很多时间)。(实时重载
  3. 当开发人员将代码保存在自己的计算机上时,他希望显示JS错误/常规最佳常规违规的完整列表。(grunt-contrib-jshint
  4. 您有一个包含SASS / LESS文件的项目,在开发过程中需要将其编译为开发人员机器上的CSS文件,例如,只要他保存了SASS文件,就希望将其自动编译为CSS文件,以包含在页面中。(gr咕con
  5. 您有一个正在使用UI的前端开发人员团队,以及一个在后端工作的后端开发人员团队,您希望前端开发人员使用后端REST API,而不必每次都自己编译和部署代码。机器。如果您想知道,对于典型的Web服务器设置是不可能的,因为浏览器不允许XHR跨域。Grunt可以为您设置代理,以将Grunt Connect服务器中自己系统上的XHR请求重定向到另一个系统!(grunt-contrib-proxy,grunt-contrib-connect

我认为您的Shell脚本无法完成所有这些任务。总而言之,是的,对于那些很少接触javascript的人来说,设置Gruntfile.js是一件很乏味的事情。对于NodeJS来说,这是我的新手。不要花时间为您的前端项目设置合适的Gruntfile.js,您将感谢上帝使您的生活变得更加轻松:)

Advantage vs Shell脚本:

  1. 如果您为这些任务中的每一项编写Shell脚本,那么维护并为您的每一项需求进行自定义都会很繁琐。实际上,Gruntfile.js非常简单。您可以使用它进行配置,并指定要执行的任务,每个任务的源和目标。

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

  3. 对于从事前端技术工作的人,如果您有不止一个人与您一起工作,那么他们很容易了解Grunt,而关于Grunt的文献已经很好地记录了很多SO的答案,而不是了解您的。外壳脚本。这可能是大型团队的一个因素。

  4. Grunt的众多插件扩展了基本功能。除非您的Shell脚本非常流行并且非常模块化,否则我看不到为其构建插件。这还扩展到在项目中包含新的前端技术。说,如果您想明天在项目中使用Typescript,则您的Shell脚本将需要将其合并并自行解决。使用Grunt,它就像“ npm install”和添加配置一样简单。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.