如何使用 ExtUtils::MakeMaker 填充 META 文件中的“提供”字段

问题描述 投票:0回答:2

我的一个模块未满足 CPANTS 政策meta_yml_has_provides

文档指出:

将此发行版中包含的所有模块添加到 META.yml 字段“provides”中。 Module::Build 或 Dist::Zilla::Plugin::MetaProvides 会自动为您执行此操作。

在使用 ExtUtils::MakeMaker 时如何将其应用到我的 CPAN 模块?

perl cpan makemaker
2个回答
3
投票

你可以这样做:

use ExtUtils::MakeMaker;
use Module::Metadata;
WriteMakefile(
    ...
    META_ADD => {
        provides => Module::Metadata->provides(version => '1.4', dir => 'lib'),
    },
    ...
);

但是您的最终用户还需要依赖 Module::Metadata。您可能想添加一些仅供作者使用的逻辑以供生产使用。 YMMV.

我不确定这是否真的值得。也许 MakeMaker 应该对此有内置支持。


0
投票

以防万一有人需要 MakeMaker 解决方案,您还可以将提供内容添加到 Makefile.PL 中的 META_MERGE 信息中,如下所示:

    META_MERGE => {
        "meta-spec" => { version => 2 },
        provides => {
            'Your::Module1' => {file => 'lib/Your/Module1.pm', version => x.y},
            'Your::Module2' => {file => 'lib/Your/Module2.pm', version => x.y},
        },

版本标签是可选的,如果维护起来太繁琐的话。

© www.soinside.com 2019 - 2024. All rights reserved.