假设我有两个本地现存的模块,它们在 Forge 或自定义的类似 Forge 的存储库中都不存在。这些存储库永远不会通过命令行安装,因为它们是更大的部署的一部分,无法使用类似 Forge 的安装命令 - 它们是手动或通过存储库克隆放置在那里的。
ModuleA
在其文件夹中定义一个函数functions
,并且可以在 的范围内调用ModuleA
。一切都很好。
ModuleB
尝试从调用函数ModuleA
并失败由于模块未安装且无法在 JSON 清单中找到。
能否很好地解决此限制?可以以这种方式调用类 - 我不想因为这个尴尬的限制而牺牲良好的设计。
答案1
弄清楚了这一点 - 如果您希望在同一空间中导入模块的函数,您需要做的就是将模块包含在导入模块的文件dependencies
中metadata.json
(我上面问题中的 ModuleB)。他们文档中的用法manifest
令人困惑 - 将其包含在内metadata
会更正确。
因此文件中的依赖节点metadata.json
将是这样的
"dependencies": [
{ "name":"puppetlabs/apt","version_requirement":"6.0.0" },
{ "name": "mycompany/moduleb", "version_requirement": "> 0.0.1" }
]
包含moduleb
可导入函数。这可能意味着您无法正确使用 Puppet 锻造,但如果您正在处理这个问题,您可能不会损失太多。