我有一个模块我想发布给CPAN,我喜欢使用dzil来进行打包和发布。但是,该模块依赖于外部应用程序,虽然我知道它在我的机器上的安装位置,但我想让用户输入它在机器上的安装位置。阅读Prompt user during unit test in Perl后,我看到ExtUtils :: MakeMaker :: prompt就是我想做的事。
在使用dzil时,我如何合并(或类似的东西)?
答案 0 :(得分:2)
标准MakeMaker dzil插件除了基本的Makefile.PL之外不支持任何其他内容。 (好吧,它可以使用File::ShareDir::Install,但这是它的限制。)如果你需要更复杂的安装时行为,你需要使用别的东西。
我推荐我的MakeMaker::Custom插件。您可以编写自己的Makefile.PL,它可以执行ExtUtils::MakeMaker能够执行的任何操作,包括提示信息。您仍然可以在dzil
时dzil build
添加诸如先决条件之类的内容,因此您仍然可以使用AutoPrereqs。 (实际上,我建议使用ModuleBuild::Custom,但如果你想坚持使用MakeMaker,那就没关系。)
注意:您还应该允许在命令行上提供您提示的信息。这将帮助那些尝试使用自动构建工具打包您的发行版的人。但这是一个MakeMaker问题,而不是Dist :: Zilla问题。
答案 1 :(得分:0)
用户不应该通过Dist :: Zilla进行安装。它只是一个作者工具,正如其文档明确指出的那样。 Dist :: Zilla旨在构建通过EUMM或M :: B安装的发行版。
编辑:鉴于你的评论,我想说,听起来你的构建过程并不适合使用Dist :: Zilla,至少是一致的。我建议再次使用它来构建它,然后转向使用它构建的EUMM或M :: B,根据您的目的修改它并继续开发它。
答案 2 :(得分:0)
如果您正在使用ExtUtil :: MakeMaker来安装您的发行版,那么您可以使用dzil插件Dist::Zilla::Plugin::MakeMaker::Runner(这是一口)将自定义Makefile.PL
与您的dist捆绑在一起而不是生成默认的一个。
如果您需要,可以使用prompt
从Makefile.PL
内收集自定义信息。