如何编辑Meteor的第三方软件包

时间:2016-02-26 03:56:21

标签: debugging meteor package

我找到并修复了第三方Meteor软件包中的错误。在测试修复时,我遇到了一些意想不到的困难,我将在下面描述。

在Meteor中测试修补的第三方软件包的推荐方法是什么?

在Mac上,命令meteor add username:package-name将文件从Atmospherejs.com复制到~/.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个不必要的空白字符。现在Meteor抱怨它无法读取整个文件。所以我在文件的末尾添加了太多的空格,而Meteor很乐意剪掉它不想要的字符。

我现在能够检查我的修复是否有效,并在其GitHub页面上发布了包的问题,​​以便原始开发人员可以发布修复。

此特定包作为不同包的一部分包含在内,因此它是作为meteor add otheruser:different-package-name命令的结果安装的。

覆盖默认软件包位置中存储的文件的可接受方法是什么,以便可以使用修补版本,而Meteor对脚本文件中的确切字节数不会有任何疑问?

1 个答案:

答案 0 :(得分:2)

您花了太多时间来阻止流星再次更新原始版本。最简单的方法是

  1. 分叉原始项目
  2. 将您的fork repo拉入packages项目
  3. 中的文件夹meteor
  4. 在分叉
  5. 上更改您想要的任何内容
  6. 将其包含在meteor包文件(.meteor / packages)中。请务必触发meteor remove <package-name>
  7. 删除旧包
  8. 运行项目
  9. 默认情况下,meteor将首先查看外部包的packages文件夹,如果找不到,则会在Atmosphere上查找。

    到那时,只需通过回购请求的pull请求通知原始开发人员。