如何编辑Meteor的第三方软件包
我发现并修正了第三方Meteor软件包中的错误。在测试修复程序时,我遇到了一些意想不到的困难,我在下面描述。如何编辑Meteor的第三方软件包
在Meteor中测试已修补的第三方软件包的建议方法是什么?
在Mac上,从Atmospherejs.com命令meteor add username:package-name
将文件复制到该文件夹在~/.meteor/packages/username_package-name/
。我找到了这个文件夹中的原始文件并对其进行了编辑。
问题很简单。原来的剧本包括线...
options.userCallback = function (error) {
if (error.error ...) {}
所有我需要做的是把这里改为:
options.userCallback = function (error) {
if (error && error.error ...) {}
不过,我现在又增加了9个字符到文件。当Meteor编译我的应用程序时,会切断脚本的最后9个字符,并导致运行时错误。据推测,Meteor将文件的预期长度存储在某处。作为一个黑客,我从文件中删除了更多9个无关紧要的空白字符。现在流星抱怨说它无法读取整个文件。所以我在文件末尾添加了太多空白,而流星很乐意修剪它不想要的字符。
我现在能够检查我的修复程序是否有效,并在其GitHub页面上发布该程序包的问题,以便原始开发人员可以发布修复程序。
此特定软件包是作为其他软件包的一部分包含的,因此它是作为meteor add otheruser:different-package-name
命令的结果安装的。
什么是接受的方法来覆盖存储在默认包位置的文件,这样就可以使用补丁版本来代替,而不需要流星获得关于脚本文件中确切字节数的持久性?
你花了太多的时间来防止流星更新你的改变到原来的。最简单的方法是
- 叉原项目
- 您的分叉回购拉入文件夹
packages
在meteor
项目你想在分叉 - 任何更改,这包括对流星包文件(。流星/包)。记得触发
meteor remove <package-name>
- 运行项目
默认情况下删除旧的包,流星会看packages
文件夹第一的外包装,如果它不能发现,那么它会查找上Atmosphere
。
到那时,只需通过您的回购请求通知原始开发者。
“手动检索已更改的回购作为一个包并将其包含在流星包文件中”
@JamesNewton更新了答案 –