Perl 向CPAN发行版添加实用程序模块的正确方法是什么?
我想将的Perl 向CPAN发行版添加实用程序模块的正确方法是什么?,perl,cpan,Perl,Cpan,我想将的Makefile.PL中的一些内容分解成几个单独的类。这些类只能由Makefile.PL使用。因此,我确实想要它们 不由暂停索引器索引 不作为模块的一部分安装 我是否应该像那样把它们放在inc中?我还应该注意什么?暂停在META.yml文件(规范:,)中查找无索引参数。ExtUtils::MakeMaker生成的默认META.yml包含 no_index: directory: - t - inc 但如果您愿意,可以添加更多数据 pack
Makefile.PL
中的一些内容分解成几个单独的类。这些类只能由Makefile.PL
使用。因此,我确实想要它们
我是否应该像那样把它们放在
inc
中?我还应该注意什么?暂停在META.yml文件(规范:,)中查找无索引
参数。ExtUtils::MakeMaker
生成的默认META.yml包含
no_index:
directory:
- t
- inc
但如果您愿意,可以添加更多数据
package:
- Some::Package::Used::For::Building::But::Not::To::Be::Installed
file:
- a-file/with/a/package/statement/that-should-be/ignored.pm
这里确实有两个问题。一种是防止PAUSE为发行版中的额外模块编制索引,这样它们就不会出现在软件包中,以及如何避免欺骗用户安装它们 暂停回答是正确的修复、无索引的
no_index
内容以及伪造手表的古老民间传说的组合。PAUSE希望发现您的发行版中有哪些软件包。它在名称空间的同一行上查找。如果它不在同一行上,暂停就会经过它。因此,您将在一些旧的“隐藏”模块中看到以下行:
package # separate lines get past PAUSE
Some::Helper::Module;
如果你喜欢看幕后,相关代码在(中)
另一个问题是不要在发行版中安装额外的东西。索引与此无关。构建文件将大量内容移动到blib(构建库)中,为安装做好准备。任何在那里结束的东西都会被安装。诀窍是不要让构建器将助手模块放在那里。只要不将它们放在发行版的顶层或lib目录中,这通常不是问题。这听起来是转换为Dist::Zilla,然后将新功能放入dzil插件的理想时机。@你说得对。可悲的是,我觉得我可能永远不会理解Dist::Zilla,更不用说正确地使用它了。好吧,这就引出了另一个问题:我不认为dzil是这个问题的解决方案。看起来您正在谈论Makefile.PL在安装时所做的事情。Zilla插件在tarball创建时运行。(我仍然建议使用dzil获得其他好处,但这不是它试图解决的问题。)@cjm我意识到了这一点,并更新了我的另一个问题。有没有一种方法可以使用包含必要的安装时功能的
Dist::Zilla
生成Makefile.PL
?