例如,如果我正在开发一个只有前端的网站,我可能会有几个CoffeeScript文件,若干萨斯文件、几个 HTML 文件和一些图像。
CoffeeScript 文件需要编译为 JavaScript,Sass 文件需要编译为 CSS,并且这些新文件需要最小化。图像需要删除其元数据。所有生成的文件都需要移动到具有其自己结构的新目录中。
这些看起来都不是特别复杂,但我见过很多人使用生成文件为了这。
我是不是太不愿意学习如何使用 makefile 了?与简单的 bash 脚本相比,它们有什么优势?
答案1
所以,你说得对,这不是一个艰巨的任务,make 提供的优势现在是
作为伊格纳西奥说使之能够感知并行构建。使用
-j
标志。如果您正确地表达了依赖关系,make 就不会重建不需要它的东西。当然,您可以在 bash 脚本中实现这一点,但这意味着增加了脚本的复杂性(我必须阅读手册页才能记住怎么做),而 make 已经知道这一点。
您可以定义通用规则(后缀规则(旧式)或模式规则(GNU make 中首选)),这些规则适用于所有需要从 Foo 类型构建的 Bar 类型的文件。同样,循环将在 bash 中处理该问题,但 make 已经知道如何执行该操作。
但大的优点是:如果任务变得更加复杂,你的 makefile 会缓慢而简单地增长,而你的脚本可能会意外膨胀。
如果你会编程(或多或少会编程)你可以管理(一开始觉得语言可能有点奇怪)。
答案2
Makefile 可以轻松实现并行化。由于 make 能够感知依赖关系,因此它可以安排作业,从而尽可能高效地利用系统上的所有核心。