【问题标题】:What is Grunt for?咕噜声有什么用?
【发布时间】:2015-05-25 07:14:09
【问题描述】:

我正在尝试使用 Grunt,我是新手,但我不了解它的实用性。

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

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

我错过了什么?

【问题讨论】:

  • grunt 消除了项目的繁重工作。运行 javascript 优化器、css lint 等的任务。编写自定义 shell 脚本并不理想。相比之下,设置 grunt 相当容易。
  • 我对 grunt 很陌生...你能给我建议如何使用 grunt 为 Angular 项目构建 Jenkins

标签: javascript automation gruntjs


【解决方案1】:

Grunt 基本上是在 NodeJS 之上编写的构建/任务管理器。我将其称为 Java 的 ANT 的 NodeJS 堆栈等价物。以下是您希望在以下情况下使用 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 可以为您设置一个代理,将您自己系统上的 XHR 请求在 grunt 连接服务器中重定向到另一个系统! (grunt-contrib-proxy、grunt-contrib-connect

我认为你的 shell 脚本不能做到所有这些。总而言之,是的,设置 Gruntfile.js 对于几乎没有接触过 javascript/nodeJS 新手的人来说是乏味的,我经历了与学习者相同的痛苦,但 Grunt 是一款了不起的软件。一定要花时间为你的前端项目设置一个合适的 Gruntfile.js,你会感谢上帝让你的生活变得更轻松:)

优势 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”并添加配置一样简单。

【讨论】:

    【解决方案2】:

    尽管我同意 Accepted Answer 中指出的大多数优点,但我仍然必须考虑 Keith Cirkel 在 Why we should stop using Grunt & Gulp 中强调的缺点

    因此,Grunt 的开销会抵消一些优势,至少您应该在最终决定是否使用 Grunt 时考虑所有这些。

    【讨论】:

      猜你喜欢
      • 2014-07-25
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 2020-03-11
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多