Kai*_*epi 5 config packages perl6
我有一个包config.json用于它使用的一些设置.我在本地保留包,而不是从CPAN安装它.我的问题是当我进行更改时config.json,程序包无法识别自配置文件缓存到别处以来的更改,迫使我运行zef install --force-install或删除precomp.如何确保程序包始终识别配置文件的更新?
当您使用安装包时zef,它会将它们保留在文件系统中,但它们的名称会转换为 sha1,类似于
/home/jmerelo/.rakudobrew/moar-2018.03/install/share/perl6/site/sources/81436475BD18D66BFD96BBCEE07CCCDC0F368879\nRun Code Online (Sandbox Code Playgroud)\n\nzef但是,您可以跟踪它们,并且可以使用 找到它们zef locate,例如:
zef locate lib/Zef/CLI.pm6\nRun Code Online (Sandbox Code Playgroud)\n\n您可以从程序中运行它,例如这样:
\n\nsub MAIN( Str $file ) {\n my $location = qqx/zef locate $file/;\n my $sha1 = ($location ~~ /\\s+ \\=\\> \\s+ (.+)/);\n say "$file \xe2\x86\x92 $sha1[0]";\n}\nRun Code Online (Sandbox Code Playgroud)\n\n它会返回几乎相同的结果,除了它会为您提供在命令行中提供的文件的第一个位置:
\n\nlib/Zef/CLI.pm6 \xe2\x86\x92 /home/jmerelo/.rakudobrew/moar-2018.03/install/share/perl6/site/sources/81436475BD18D66BFD96BBCEE07CCCDC0F368879\nRun Code Online (Sandbox Code Playgroud)\n\n您可能需要将config.json文件安装在resources目录中(这是首选位置),然后使用类似的东西。
也就是说,实际安装您正在测试的模块可能并不是最好的策略。如果您仍在测试某些东西,最好将其保留在您正在使用和使用的目录中,perl6 -I<that directory>否则use lib <that directory>可能是更好的选择。您可以在发布时删除它,也可以保留它,因为这只会将另一个目录添加到搜索路径中,并且不会损害已发布的模块。