我一直在使用Dist :: Zilla工作项目,我在[Prereqs / Requires]
部分声明了所有依赖项。到目前为止一切都很好。
现在我发现我的一个依赖项的最新版本破坏了向后兼容性,所以我想限制我依赖的版本范围。像cpanm
支持的东西:
# from perldoc cpanm
cpanm Plack~">= 1.0000, < 2.0000" # latest of 1.xxxx
cpanm Plack@0.9990 # specific version. same as Plack~"== 0.9990"
或Module::Build
:
'Other::Module' => '>= 1.2, != 1.5, < 2.0',
一般情况下,如何使用Dist :: Zilla声明此类依赖关系?
答案 0 :(得分:4)
Dist::Zilla::Prereqs使用CPAN :: Meta :: Spec来执行先决条件。该文档描述了Version Ranges章节中的语法。
某些字段(prereq,optional_features)表示特定字段 某些其他模块的版本可能需要作为 先决条件。本节详细介绍了用于的版本范围类型 提供此信息。
版本范围的最简单格式就是版本号 本身,例如2.4。这意味着至少必须安装2.4版本 当下。表明任何版本的先决条件都可以,甚至 如果先决条件根本没有定义版本,请使用该版本 0
或者,版本范围可以使用运算符&lt; (小于),&lt; = (小于或等于),&gt; (大于),&gt; =(大于或等于),== (等于),和!=(不等于)。例如,说明书&lt; 2.0 表示任何小于2.0的先决条件版本都是合适的。
对于更复杂的情况,可以对版本规范进行AND编辑 一起使用逗号。规范&gt; = 1.2,!= 1.5,&lt; 2.0 表示版本必须至少为1.2,小于2.0,而不是 等于1.5。
所以你的先决条件将成为:
[Prereqs]
Plack = >= 1.0000, < 2.0000
Plack = == 0.9990
Other::Module = >= 1.2, != 1.5, < 2.0
请注意将模块名称(键)与版本或版本范围(值)分开的单个=
。
那些版本意味着:
&gt; = 1.0000,&lt; 2.0000
大于或等于1.0000且小于2.0000
== 0.9990
完全版本0.9990
= 1.2,!= 1.5,&lt; 2.0
大于或等于12而不是1.5且小于2.0
如您所见,这与cpanfile或Module :: Build完全相同。
答案 1 :(得分:1)
执行此操作的方法:
[Prereqs]
Plack = >= 1.000, < 2.000
Other::Module = == 1.0
Other::Other::Module = >= 1.2, != 1.5, < 2.0
ETA:simbaque已经纠正了他们的答案;留下这个为后代。