Apostrophe CMS 中自定义 npm 模块中的模板覆盖

Template overriding in custom npm-modules in Apostrophe CMS

为了在我的大多数 Apostrophe 项目中进行通用设置,我计划构建一些自定义 npm 模块来捆绑它们并将它们添加到我的项目中。我想在其中做的一些功能,除了添加小部件和后端功能外,还包括编辑官方撇号模块的设置(例如,为 apostrophe-pages 设置默认页面类型)和覆盖 nunjuck 块 and/or 模板。

在项目级配置中,使用 Apostrophe 的隐式子类化机制,这两个东西都可以很容易地被覆盖,因此我可以使用自定义样板实现为不同项目共享通用基础设置的目标,尽管我会失去能力通过发布我的节点模块的新版本来升级我的默认设置。

总而言之,我在考虑这样一个 Maven 风格的依赖层次结构:

Apostrophe npm modules <- custom npm modules <- project modules

来自 Java 和基于 Maven 的 CMS,我知道我需要在很多事情上改变我的思维方式,所以:我正在尝试做的是可能的,并且它在撇号世界?什么是 "The Apostrophe Way" 才能实现这样的目标?我是否需要为每个我想扩展的模块创建一个带有 moog 选项 improve 的自定义 npm 模块?

提前致谢。

即使在 npm_modules 目录中,撇号也会首先搭建基础模块,然后才是扩展这些模块的模块,这意味着您的自定义 npm 模块将遵循与官方撇号模块相同的继承链。您可以像覆盖任何其他撇号模块一样覆盖它们。

meta module (apostrophe-pieces) > custom-pieces (piece extension, custom npm module) > custom-pieces (project-level overrides)

您只需选择性地覆盖 lib/modules/ 中的文件和方法,就像您覆盖 apostrophe-blog 的部分内容一样,例如 lib/modules/custom-pieces/views/widget.html

我是否正确理解了您想要覆盖事物的方式?