我熟悉将package.json
与node.js一起使用,Gemfile
用于Ruby,Podfile
用于Objective-C,等等。
Perl的等效文件是什么,使用的语法是什么?
我已经使用cpanm安装了几个软件包,并希望将软件包名称和版本保存在一个可由团队成员执行的文件中。
答案 0 :(得分:3)
对于简单的用例,编写cpanfile
是一个不错的选择。示例文件可能看起来像
requires 'Marpa::R2', '2.078';
requires 'String::Escape', '2010.002';
requires 'Moo', '1.003001';
requires 'Eval::Closure', '0.11';
on test => sub {
requires 'Test::More', '0.98';
};
也就是说,它实际上是一个Perl脚本,而不是数据格式。然后可以像
一样安装依赖项$ cd /path/to/your/module
$ cpanm --installdeps .
这不会安装你的模块!但它确保所有依赖关系都得到满足,因此我们可以这样做:
use lib '/path/to/your-module/lib'; # add the location as a module search root
use Your::Module; # works! yay
这通常是足够的,例如对于你希望别人修改的git存储库。
如果你想创建一个可以轻松分发和安装的tarball,我建议Dist::Zilla
(尽管它适用于CPAN版本)。我们使用cpanfile
代替dist.ini
:
name = Your-Module
version = 1.2.3
author = Your Self <you@example.com>
license = GPL_3
copyright_holder = Your Self
[@Basic]
[Prereqs]
Marpa::R2 = 2.078
String::Escape = 2010.002
Moo = 1.003001
Eval::Closure = 0.11
[Prereqs / TestRequires]
Test::More = 0.98
然后:
$ dzil test # sanity checks, and runs your tests
$ dzil build # creates a tarball
Dist :: Zilla负责创建安装模块所需的Makefile.PL
和其他基础架构。
然后您可以分发该tarball,并像cpanm Your-Module-1.2.3.tar.gz
一样安装它。解析依赖关系,将您的包复制到永久位置,现在您可以在任何脚本中use Your::Module
,而无需指定位置。
请注意,您应遵守Perl模块的标准目录布局:
./
lib/
Your/
Module.pm # package Your::Module
Module/
Helper.pm # package Your::Module::Helper
t/ # tests to verify the module works on the target syste,
foo.t
bar.t
xt/ # optional: Author tests that are not run on installation
baz.t
bin/ # optional: scripts that will later end up in the target system's $PATH
command-line-tool
答案 1 :(得分:-1)
Makefile.PL
通常(以及其他一些文件; Perl的包装时间比你提到的任何其他语言都要长,并且在这里有点不合时宜)。
Module Starter是开始编写程序包的明智方法。它有一个getting started指南。