使用Dist :: Zilla声明对特定版本的Perl模块的依赖性

时间:2016-10-21 10:03:00

标签: perl dist-zilla

我一直在使用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声明此类依赖关系?

2 个答案:

答案 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)

上面的simbaque几乎是正确的,Fabrice Gabolde还有其他的(我不知道如何链接名字)。

执行此操作的方法:

[Prereqs]
Plack = >= 1.000, < 2.000
Other::Module = == 1.0
Other::Other::Module = >= 1.2, != 1.5, < 2.0

ETA:simbaque已经纠正了他们的答案;留下这个为后代。