我有一个本地分布如下:
.
├── META6.json
└── lib
└── Foo.pm6
编译和运行perl6 -I. -e 'use Foo;'
和perl6 -Ilib -e 'use Foo;'
,我应该使用哪一个?为什么?
提出这个问题的另一种方式是“-I $ dir-with-meta6-file和-I $ dir-without-meta6-file之间有什么区别?”。在这个答案中,-I.
在技术上将引用-I $dir-with-meta6-file
,而-Ilib
将引用-I $dir-without-meta6-file
。另请注意,这涵盖了use lib '.'
和use lib 'lib'
-I.
和-Ilib
之间的区别可以概括为:
-I.
将查看META6.json
提供的文件/命名空间及其版本/ api / auth-Ilib
提供所有现有文件并将它们映射到可预测的命名空间(Foo/Bar.pm6
- > Foo::Bar
)并匹配任何版本/ api / auth通常-Ilib
在开发时使用,特别是在启动时,因为它比在META6.json
文件中手动添加/删除条目更容易。如果您正在编写本地应用程序或不打算安装的东西,这大部分都可以。
然而!一旦为分发创建了-I.
文件,META6.json
应该是首选。手动维护可能稍微多一点,但它有一些优点:
META6.json
文件中列出的文件。.pm
文件旁边的Perl .pm6
文件作为一种双语分发,因为您可以明确告诉Perl6使用哪些文件。 -Ilib
必须将所有.pm
和.pm6
文件视为Perl6,这与此想法不兼容。