【问题标题】:perl: new cpan module maker? local configuration text files and executables, too?perl:新的 cpan 模块制造商?本地配置文本文件和可执行文件?
【发布时间】:2014-01-28 15:57:49
【问题描述】:

我正在编写一个希望与他人分享的 perl 程序,最终通过 cpan。它已经到了我应该开始更大规模地考虑这个问题的地步了。

  • 十年前,我曾经使用过一次 h2xs 包生成器。这仍然是最推荐的入门方式吗?曾经有几个选择。因为我是从零开始,几乎没有什么回忆,在这一点上任何简单的事情都可以。

  • 我需要阅读一些长文本文件(不是 perl 模块)进行配置。无论模块安装在哪里,我应该把它们放在哪里以及如何访问它们? (FindBin?)_DATA_ 不方便。

  • 我需要提供一个可执行文件(linux 和 osx)。可以将可执行文件放入用户路径中作为模块安装的一部分吗? (怎么做?)

  • 我希望能够继续开发、运行以进行测试、拥有新版本、重新打包并轻松重新上传。

  • 在上传到 cpan 之前,我可以共享一个 cpan 包以便下载者和测试者轻松进行本地安装吗?

    #cpan

建议表示赞赏。

问候,

/iaw

【问题讨论】:

    标签: perl cpan


    【解决方案1】:

    如果我说的任何话与安迪·莱斯特有冲突,请听他的。他比我知道的更多。

    • Module::Starter 是生成模块脚手架的好方法。我的看法是,这几年来一直是这种事情的默认设置。

    • 对于配置/支持文件,我想你可能想要File::ShareDir。如果只是需要多个__DATA__ 部分,可能值得考虑Data::Section

    • 您当然可以put scripts in the bin subdirectory of your distribution,构建工具会在安装时将其放在正确的位置。

    • 构建工具会处理您描述的工作流程。

    • 捆绑包有所不同。您进行分发并共享压缩包/存档。

    如果您适当地设置了PERL5LIB,请重复make testmake installmake dist,让您随心所欲。出于开发/共享目的,许多项目在 github 或类似网站上进行工作 - 使其易于共享。他们也有用于商业目的的私人账户。如果您想回放并查看问题出现的地点/时间,这非常有用。

    如果您获得cpanm 的副本(安装简单,相当轻量级),那么它可以从 tar.gz 文件安装,甚至可以直接从 git 存储库安装。您还可以告诉它安装到本地目录(local::lib 兼容 - 另一个非常有用的实用程序)。

    希望这是 2014 年的最新版本。您可能会看到在模块开发中提到的 Dist::Zilla。我的理解是,它对那些拥有大量 CPAN 发行版的人最有用。哦 - 如果您(或其他读者)不了解它们,请查看 autodieTry::Tiny 周围的错误和异常,Moose(对于功能齐全的面向对象框架)和 Moo(对于较小的轻量级版本)。

    我认为这些建议完全没有争议。我发现cpanm 比“完整”cpan 客户端更令人愉悦,而Moo 现在似乎也很受欢迎。

    【讨论】:

    • 感谢您的信任投票,Richard,但我已经很多年没有在 Module::Starter/dzil 舞台上玩了。毫无疑问,有很多我没有跟上。
    【解决方案2】:

    看看 Module::Starter 及其更强大(也更复杂)的继承者 Dist::Zilla。

    无论你做什么,都不要使用 h2xs。 Module::Starter 是专门创建的,因为 h2xs 是一个不适合创建发行版的工具。

    【讨论】:

    • 有教程吗?主 Module::Starter 只是告诉我它依赖于插件......
    • 安装模块后,您将获得一个module-starter 命令行工具。基本上你只需运行module-starter,它就会显示所有选项,比如--author 和--module 等等。基本上你只需要module-starter --module=My::Module::Name --author='Your Name' --email='Your@email.com' 和其他一些。然后,您将为您创建一个 My-Module 目录树,其中包含文件。我在几年前创建了 Module::Starter,但我已经很久没有成为维护者了,而 SawyerX 已经为它添加了很多东西。但这些应该是基础。
    猜你喜欢
    • 2017-01-02
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多