8.2 作为Hugo模块的主题

8.2 作为Hugo模块的主题 #

主题是多个网站之间最常见的共享元素。 它们是Hugo模块最常见的场景。 在第2.2节中,我们介绍了主题的概念,我们讨论了将主题集成到网站中的三种方法:下载和复制(我们到目前为止一直在使用)、Git子模块(不再推荐)、 和Hugo模块 (我们没有使用,因为下载和复制对于初学者来说更容易)。 我们使用下载和复制,因为它很容易上手,但它有一些缺点:

  • Updates—发布一个主题的更新是很痛苦的。 每个人都保留主题的副本。 更新是手动操作,因为你需要下载新版本。 没有直观的方法来了解新版本,开发人员可以自由修改其本地副本,从而使更新更加困难。
  • Dependencies—尽管到目前为止,我们在AcmeTheme模块中硬编码了所有的CSS和JavaScript文件,但拥有一个独立的网站还是很少见的。 一个主题可能依赖于其它地方维护的JavaScript或CSS库的可能性很高。 如果下载该库并将其复制到主题中,则更新也是手动的。
  • Size and sharing—保留主题的副本会使我们的代码存储库的大小膨胀。 共享一个庞大的存储库可能会很笨拙。 主题中存在的代码也可能破坏报告构建。 修改代码库的自动化工具可能会扰乱捆绑的主题,导致混乱和资源浪费。

这些问题主要是由复制主题的源代码而不是链接到主题的源代码引起的。 链接是一种比下载和复制更干净的解决方案。 如果我们需要一个存储库的备份,一个链接的fork (Git存储库的副本,可以有原始代码的链接) 或一个外部存档是一个比捆绑的资源副本好得多的主意。 这样,我们就可以很容易地获取依赖项,还可以跨网站共享主题。