我正在尝试使用Grunt,这是我不熟悉的东西,但我不明白它的实用性。
我知道它是一个任务运行器。我知道它可以用来做像捆绑、缩小、jshint、最小化等等任何可以转换为脚本任务的事情。
但我不明白这给了什么优势。几乎所有这些都可以从命令行运行,也就是说,您只需使用简单的shell脚本组合即可。在我看来,设置grunt + gruntfiles并编写任务比编写shell脚本更费力而不是更省力。
我对此有什么误解吗?
我正在尝试使用Grunt,这是我不熟悉的东西,但我不明白它的实用性。
我知道它是一个任务运行器。我知道它可以用来做像捆绑、缩小、jshint、最小化等等任何可以转换为脚本任务的事情。
但我不明白这给了什么优势。几乎所有这些都可以从命令行运行,也就是说,您只需使用简单的shell脚本组合即可。在我看来,设置grunt + gruntfiles并编写任务比编写shell脚本更费力而不是更省力。
我对此有什么误解吗?
Grunt基本上是一个构建/任务管理器,使用NodeJS编写。我会称其为Java的ANT在NodeJS堆栈中的等价物。以下是您希望在下列情况下使用grunt的一些常见场景:
我不认为您的shell脚本能够完成所有这些任务。总之,对于那些几乎没有接触过JavaScript / 刚接触nodeJS的人来说,设置Gruntfile.js确实很繁琐,我作为学习者也经历了同样的痛苦,但是Grunt是一款惊人的软件。花时间为您的前端项目设置正确的Gruntfile.js,您会感谢上帝使您的生活变得更轻松:)
与shell脚本相比的优势:
如果您为每个任务编写Shell脚本,那么维护和自定义工作将变得很繁琐。Gruntfile.js实际上非常简单。有一个配置项可以用来初始化它,指定要执行的任务、每个任务的源和目标。
与Yeoman、Gulp等项目种子生成器的集成是另一个重要因素需要考虑的。Yeoman和Gulp都带有具有智能默认值的Gruntfile.js。对于团队中唯一的UI贡献者来说,这对我来说是无价的!
对于从事前端技术的人来说,如果你有多人与你合作,让他们了解Grunt比让他们了解你的Shell脚本更容易。Grunt已经有很多在SO上的答案并且有良好的文档记录。这可能是大型团队中需要考虑的因素之一。
Grunt的众多插件扩展了基本功能。除非您的Shell脚本非常流行且非常模块化,否则我不认为会有人为其构建插件。这也适用于在项目中包含新的前端技术。例如,如果您想在明天的项目中使用TypeScript,则需要修改您的Shell脚本并自己编写代码来支持。而使用Grunt,只需要执行 "npm install" 并添加配置即可。
虽然我同意 被接受的答案 中提出的大多数优点,但我仍然必须考虑 Keith Cirkel 在为什么我们应该停止使用Grunt和Gulp中强调的缺点。
因此,一些优点被Grunt开销所驳斥,至少你应该在最终决定使用Grunt还是不使用时考虑到这些问题。