为了创建和维护Perl 5模块,我使用Dist::Zilla
.我最喜欢的功能之一是能够安装本地模块.
但是,使用Perl 6,我不确定如何安装本地模块.当然,我可以使用use lib
:
use lib 'relative/path';
use My::Awesome::Module;
Run Code Online (Sandbox Code Playgroud)
但是,我真的希望能够安装My::Awesome::Module
,所以我所要做的就是use
它:
use My::Awesome::Module;
Run Code Online (Sandbox Code Playgroud)
实现这一目标的一种方法是设置PERL6LIB
,但仍然不是"安装"类似的模块zef install ./My-Awesome-Module
.
更新:看起来我需要制作一个合适的META6.json文件.
要了解如何设置工具链实用程序可以理解的模块,请参阅准备模块。通常,这意味着添加一个描述分发的 META6.json 文件,包括准清单元素,例如您真正想要包含/提供的文件。创建 META6.json 后,模块就可以安装了:
zef install ./My-Awesome-Module
Run Code Online (Sandbox Code Playgroud)
其中(假设没有卸载的依赖项)本质上是:
my $install-to-repo = CompUnit::RepositoryRegistry.repository-for-name("site");
my $preinstall-dist = Distribution::Path.new("./My-Awesome-Module");
$install-to-repo.install($preinstall-dist);
Run Code Online (Sandbox Code Playgroud)
从 rakudo 2019.01 开始,假设没有卸载的依赖项,您可以在没有META6.json 的情况下安装本地发行版 - 但这纯粹是开发上的细节,不适用于没有可推断的命名空间和文件结构的复杂设置。 。
my $read-from-repo = CompUnit::Repository::FileSystem.new(prefix => "./My-Awesome-Module/lib");
my $install-to-repo = CompUnit::RepositoryRegistry.repository-for-name("site");
my $some-module-name = "My::Awesome::Module"; # needed to get at the Distribution object in the next step
my $preinstall-dist = $read-from-repo.candidates($some-module-name).head;
$install-to-repo.install($preinstall-dist);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
482 次 |
最近记录: |