根据Dist::Zilla::Plugin::Authority:
此插件将权限数据添加到您的分发中。它将数据添加到您的模块和元数据中。通常它会在您的 Dist::Zilla 配置中查找 PAUSE author id。
“权威数据”有什么用?为什么将它添加到所有模块中?
根据Dist::Zilla::Plugin::Authority:
此插件将权限数据添加到您的分发中。它将数据添加到您的模块和元数据中。通常它会在您的 Dist::Zilla 配置中查找 PAUSE author id。
“权威数据”有什么用?为什么将它添加到所有模块中?
在 Raku 中,一个模块(实际上是任何类型)可以有属性 :ver<>
,:auth<>
和:api<>
. 这允许您向其传递版本、作者和/或 API 编号,您可以随后对其进行自省。
class C:ver<4.2.3>:auth<github:jane>:api<1> {}
say C.^auth; # OUTPUT: «github:jane»
在 Perl 中,包的权限可以这样定义:
package MyApp;
BEGIN { $MyApp::AUTHORITY = 'cpan:JOEBLOGGS'; }
权限应该是标识负责发布包的人员、团队或组织的 URI。伪 URI 方案cpan:
是最常用的标识符。
$AUTHORITY
package 变量可以与authority pragma 一起使用,以根据其权限有条件地加载模块:
use authority 'cpan:JOE', My::Module => qw();
假设@INC
路径是/opt/perl/lib
,那么 Perl 将/opt/perl/lib/cpan_3A_JOE/My/Module.pm
在它尝试通常的加载之前尝试加载/opt/perl/lib/My/Module.pm
。
还具有定义的$AUTHORITY
, 启用模块权限自省UNIVERSAL::AUTHORITY::Lexical。例如:
use UNIVERSAL::AUTHORITY::Lexical;
if (HTML::HTML5::Writer->AUTHORITY ne HTML::HTML5::Builder->AUTHORITY)
{
warn "Closely intertwined modules with different authors!\n";
warn "There may be trouble ahead...";
}
和
use UNIVERSAL::AUTHORITY::Lexical;
# Only trust STEVAN's releases
Moose->AUTHORITY('cpan:STEVAN'); # dies if doesn't match
有关此变量的原始讨论,另请参见我们的 $AUTHORITY。