如何编辑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命令的结果安装的。

什么是接受的方法来覆盖存储在默认包位置的文件,这样就可以使用补丁版本来代替,而不需要流星获得关于脚本文件中确切字节数的持久性?

你花了太多的时间来防止流星更新你的改变到原来的。最简单的方法是

  1. 叉原项目
  2. 您的分叉回购拉入文件夹packagesmeteor项目你想在分叉
  3. 任何更改,这包括对流星包文件(。流星/包)。记得触发meteor remove <package-name>
  4. 运行项目

默认情况下删除旧的包,流星会看packages文件夹第一的外包装,如果它不能发现,那么它会查找上Atmosphere

到那时,只需通过您的回购请求通知原始开发者。

+0

“手动检索已更改的回购作为一个包并将其包含在流星包文件中”

+0

@JamesNewton更新了答案 –