例如,如果我正在开发一个仅限前端的网站,我可能有几个CoffeeScript文件、几个Sass文件、几个 HTML 文件和一些图像。
CoffeeScript 文件需要编译为 JavaScript,Sass 文件需要编译为 CSS,这些新文件需要缩小。图像需要删除其元数据。所有生成的文件都需要移动到具有自己结构的新目录中。
这一切似乎都不是特别复杂,但我看到有几个人为此使用makefile。
我是不是太不愿意学习如何使用 makefile?与简单的 bash 脚本相比,它们有哪些优势?
所以,你说得对,这不是一项艰巨的任务,现在make 提供的优势是
正如Ignacio 所说, make 具有并行构建意识。使用-j旗帜。
如果您正确表达了您的依赖关系,则 make 永远不会重建不需要它的东西。当然,你可以在 bash 脚本中得到它,但这意味着增加脚本的复杂性(我必须阅读手册页来记住如何),而 make 已经知道这一点。
您可以定义通用规则(后缀规则(旧样式)或模式规则(在 GNU make 中首选)),这些规则适用于需要从 Foo 类型构建的所有 Bar 类型的文件。同样,循环将在 bash 中处理它,但 make 已经知道如何做到这一点。
但最大的优势是:如果任务变得更复杂,您的 makefile 会缓慢而简单地增长,而您的脚本可能会意外膨胀。
如果您可以编程(或多或少),您就可以管理 make(起初认为该语言可能有点奇怪)。