如何为 Meteor 编辑第三方包

How to edit a third-party package for Meteor

我发现并修复了第三方 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 很乐意 trim 去掉它不需要的字符。

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

这个特定的包是作为另一个包的一部分包含的,所以它是作为 meteor add otheruser:different-package-name 命令的结果安装的。

覆盖存储在默认包位置的文件的公认方法是什么,以便可以使用补丁版本,而不用 Meteor 对脚本文件中的确切字节数挑剔?

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

  1. 分叉原始项目
  2. 将您的分支存储库拉入 meteor 项目meteor 中的文件夹 packages
  3. 在分叉上更改您想要的任何内容
  4. 将其包含到流星包文件 (.meteor/packages)。记住通过触发 meteor remove <package-name>
  5. 来删除旧包
  6. 运行 项目

默认情况下,meteor 会先在packages 文件夹中查找外部包,如果找不到,则会在Atmosphere.

中查找

到那时,只需通过您的存储库中的拉取请求通知原始开发人员即可。