2

我有一个要发布到 CPAN 的模块,我喜欢使用dzil进行打包和发布。但是,该模块依赖于外部应用程序,虽然我知道它安装在我的机器上的位置,但我想请用户输入它在他们机器上的安装位置。在 Perl 的单元测试期间阅读了Prompt user我看到 ExtUtils::MakeMaker::prompt 做了我想做的事情。

使用 dzil 时,我将如何合并它(或类似的东西)?

4

3 回答 3

2

标准的MakeMaker dzil 插件只支持基本的 Makefile.PL。(嗯,它可以使用File::ShareDir::Install,但这是它的限制。)如果您需要更复杂的安装时行为,您将需要使用其他东西。

我推荐我的MakeMaker::Custom插件。您编写自己的 Makefile.PL,它可以做ExtUtils::MakeMaker能够做的任何事情,包括提示信息。您仍然可以随时dzil添加诸如先决条件之类的内容dzil build,因此您仍然可以使用AutoPrereqs。(实际上,我推荐ModuleBuild::Custom,但如果你想坚持使用 MakeMaker,那没关系。)

注意:您还应该允许在命令行上提供您提示的信息。这将帮助那些试图使用自动构建工具打包您的发行版的人。但这是一个 MakeMaker 问题,而不是 Dist::Zilla 问题。

于 2012-09-24T21:55:00.477 回答
0

用户根本不应该通过 Dist::Zilla 安装。正如其文档明确指出的那样,它只是一个作者工具。Dist::Zilla 旨在构建通过 EUMM 或 M::B 安装的发行版。

编辑:鉴于您的评论,我会说,听起来您的构建过程不适合使用 Dist::Zilla,至少始终如一。我建议使用它再次构建它,然后转向使用它构建的 EUMM 或 M::B,根据您的目的对其进行修改并继续开发它。

于 2012-09-24T14:29:45.260 回答
0

如果您使用 ExtUtil::MakeMaker 来安装您的发行版,那么您可以使用 dzil 插件Dist::Zilla::Plugin::MakeMaker::Runner(这是一口)将自定义Makefile.PL与您的 dist 捆绑在一起,而不是生成默认一个。

如果需要,这将允许您prompt从内部收集自定义信息。Makefile.PL

于 2012-09-24T15:01:22.023 回答