我正在构建一个可以与 Mojo::SQLite
或 Mojo::Pg
无关地工作的模块。我如何处理依赖关系?我查过Mojo::DB::Results::Role::Struct其工作方式相同,并且它不会列出运行时级别的依赖项。
我该怎么办?
最佳答案
我会在您的 cpanfile 中将这两个列为推荐
要求。这样它们就作为依赖项存在,但除非用户要求,否则它们不会被安装。然后,我会在代码中添加运行时检查,如果它们都不可用,则会发出嘎嘎声。
要将其映射到 Dist::Zilla,可能有几种不同的方法。您可以编写自己的 cpanfile 并让 dzil 从那里获取它,或者您可以在 dist.ini 中指定依赖项,或者依靠 dzil 从您的源中查找它们...或者这些的组合。
对于WWW::Mechanize ,我们使用组合。在我们的dist.ini我们使用 Prereqs 指定最低版本插件。
[Prereqs / RuntimeRequires]
perl = 5.008
HTML::Form = 6.08
Scalar::Util = 1.14
[Prereqs / TestRequires]
HTTP::Daemon = 6.12
Test::Memory::Cycle = 1.06
Test::NoWarnings = 1.04
Test::Taint = 1.08
[Prereqs / DevelopRequires]
LWP::Protocol::https = 6.07
Perl::Critic = 0
Perl::Tidy = 0
这不是完整的要求列表,因为 AutoPrereqs为我们找到那些。我们只需要设置显式版本即可。
然后我们还使用 Prereqs::Soften 1 将需求转换为较低的...需求。
[Prereqs::Soften]
module = Compress::Zlib
to_relationship = recommends
这可能也是您想要对两个数据库模块执行的操作。
1) 此区 is in need of being taken over ,因为作者 Kent Fredric 去年因事故不幸去世。
关于perl - 使用 Dist::Zilla dist.ini 如何设置备用依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73602002/