Я пытаюсь лучше понять для чего Я мог бы использовать CPAN::Meta::Spec
для и наткнулся на следующее предложение в спецификации для ключа file
:
[...] в файл, который содержит или создает пакет.Он может быть задан как META.yml или META.json, чтобы запросить пакет для индексации без необходимости * .pm.
Это предложение читается мне так, как если бы можно было напрямую указать некоторые META.*
в конфигурации, используя путь к файлу вместо *.pm
.Следовательно, используя формулировку it
, которая явно ассоциируется с ранее упомянутым путем.Почти как в следующем примере:
provides => {
'Foo::Bar' => {
file => 'lib/Foo/Bar.pm',
version => '0.27_02'
},
'Foo::Bar2' => {
file => 'lib/Foo/Bar2.yml', <-- META.yml?
},
'Foo::Bar3' => {
file => 'lib/Foo/Bar3.json', <-- META.json?
version => '0.3'
}
Итак, хотя Foo/Bar2.pm
и Foo/Bar3.pm
могут существовать в дистрибутиве, они не определены явно, но неявно используются файлы META.*
.
Как выглядит такой META.*
, что он содержит?Только такие вещи, как name
и version
, что же может обеспечить нативный пакет Perl?Или дополнительные вещи, такие как license
и keyword
, может быть, все, кроме зависимостей?
Как CPAN-клиенты обрабатывают такие случаи?META.*
очевидно, это не сам пакет Perl, и я не понимаю, как он используется для его генерации.Так что же на самом деле устанавливается в систему?Есть ли какой-то дополнительный механизм, генерирующий пакет каким-то образом?
Как обеспечить совместимость META.*
вместо *.pm
с ключом version
и следующее ограничение:
[...] Если пакет не имеет $ VERSION, это поле должно быть пропущено.
Учитывает ли META.*
пакет, содержащий $VERSION
в этом случае?Или ожидается, что каким-то образом пакет будет сгенерирован в конце, и он просто должен иметь $VERSION
, а пока пакет не сгенерирован, можно просто использовать версию META.*
?
Спасибо за ваше разъяснение!