如何dist.ini
为我希望模块支持的每个平台(Windows/非 Windows)添加条件先决条件?
例如在 perl 代码中我可以这样做:
if ( $^0 eq 'MSWin32' ){
require Win32::Foo;
}else{
require Bar::Baz;
}
我如何迎合这样的每个系统/平台,dist.ini
以便通过 cpan/cpanm 安装正确的先决条件?
如何dist.ini
为我希望模块支持的每个平台(Windows/非 Windows)添加条件先决条件?
例如在 perl 代码中我可以这样做:
if ( $^0 eq 'MSWin32' ){
require Win32::Foo;
}else{
require Bar::Baz;
}
我如何迎合这样的每个系统/平台,dist.ini
以便通过 cpan/cpanm 安装正确的先决条件?
你不能这样做dist.ini
,因为 ini 文件实际上没有任何方法来执行条件逻辑。但一种方法可能是编写自己的 Dist::Zilla 插件,如下所示:
package Dist::Zilla::Plugin::MyPrereqs; # pick a better name
use Moose;
with 'Dist::Zilla::Role::PrereqSource';
sub register_prereqs {
my $self = shift;
my %prereqs;
if ( $^0 eq 'MSWin32' ) {
$prereqs{'Win32::Foo'} = '0.12'; # min. version
} else {
$prereqs{'Bar::Baz'} = '1.43';
}
$self->zilla->register_prereqs( %prereqs );
}
如果您将其概括为在 中获取一些依赖于平台的先决条件列表dist.ini
,它将成为一个很好的 CPAN 版本。
使用Dist::Zilla::Plugin::OSPrereqs。对于您的示例,它看起来像:
[OSPrereqs / MSWin32]
Win32::Foo = 0.12
[OSPrereqs / !MSWin32]
Bar::Baz = 1.43