什么是Grunt?

tem*_*ame 74 javascript automation gruntjs

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

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

但我不明白这给了什么优势.几乎所有这些都可以从命令行运行,也就是说你可以使用简单的shell脚本组合它们.在我看来,设置grunt + gruntfiles和编写任务比编写shell脚本更有用,而不是更少.

我对此缺少什么?

sha*_*a n 135

Grunt基本上是一个编写在NodeJS之上的构建/任务管理器.我称之为NodeJS堆栈相当于ANT for Java.以下是您希望在以下情况下使用grunt的一些常见方案:

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

我不认为你的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"一样简单,并添加了一个配置.


Mig*_*boa 11

即使我同意接受的答案中指出的大多数优点,我仍然要考虑Keith Cirkel强调的缺点为什么我们应该停止使用Grunt&Gulp

因此,一些优点是Grunt开销的反驳,至少你应该在你最终决定使用Grunt时考虑所有这些.