javascript - 如何覆盖项目中的 Meteor 核心包?

标签 javascript git meteor meteor-packages

对于 Meteor 项目,我想更改 Meteor Core 库文件。

这可能吗?如果可能,怎么做?

到目前为止,我只是尝试将文件复制到我的项目目录中,希望相应的对象只是从原始对象中覆盖,但问题是相关函数或变量仅在本地定义。

然后我尝试将它们 git clone 到项目的 packages 目录中,就像您对社区包所做的那样,但是由于 clone 命令失败,这也没有起作用(fatal: repository ... not found)并且包没有在 .meteor/packages 文件中明确调用。

有什么想法吗?

最佳答案

Meteor 允许在项目中使用本地包,包括覆盖现有(社区或核心)包的包。

虽然在本地覆盖社区包通常只需要将 GitHub 存储库克隆(或提取或添加为子模块)到 /packages 中文件夹,核心包目前位于主目录的子目录中 meteor/meteor存储库,这使得克隆它们变得更加棘手。

覆盖核心包可能需要您手动将更改应用于包作为 Meteor 或包更新(因为 Meteor 过去依赖于特定的包版本)。

因此,在采取这样的步骤之前,确保您确实需要这样做

确保您不能使用本地文件或您自己的本地包进行更改(例如,通过包装或替换函数或对其进行猴子修补)。

我使用了几种方法来覆盖核心包。

克隆整个存储库并链接目录

如果您想将您的更改贡献给项目,这将很有用。您可能应该 fork 存储库并克隆您自己的 fork 。

  1. 克隆 meteor 存储库:

    git clone https://github.com/meteor/meteor.git
    

    git clone git@github.com:<username>/meteor.git如果你 fork 了它

  2. 链接包目录(在你项目的packages目录中)
    ln -s ../../(...)/meteor/packages/
    
    您可以 checkout 所需的分支/提交并将它们复制到本地 packages当然是目录。

只静态下载包目录

有一个巧妙的技巧可以让您使用 svn 从 GitHub 下载给定目录。 .

这是通过发布获得的:

svn export https://github.com/meteor/meteor/[trunk|branches/]/packages/

例如:

克隆ddp-client来自 devel分支:

svn export https://github.com/meteor/meteor/branches/devel/packages/ddp-client

或来自 master分支:

svn export https://github.com/meteor/meteor/trunk/packages/ddp-client

注意事项:

  1. 如前所述,如果您更新 Meteor,您可能需要手动应用更改。
  2. 如果您还没有将包添加到项目 ( meteor add <package> ),请不要忘记。
  3. Meteor 预计会在某个时候切换到 NPM(可能在 Meteor v1.5 中),因此请确保仅将此答案中指定的方法用于 Meteor 自己的打包系统。

关于javascript - 如何覆盖项目中的 Meteor 核心包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38013588/

相关文章:

node.js - 子目录中的弹性 beantalk Node 应用程序

javascript - Meteor.js - 如何在登录时重新呈现模板

javascript - 单击外部选择器触发事件

javascript - 不带 JavaScript 的 Facebook AS3 SDK

git - 强制 Git 提示输入用户名和密码

Git push 不上传 .git 目录

javascript - Hook meteor 以捕获所有收集方法错误

javascript - Meteor.call 和 Meteor.publish : returning Collection. 正确找到

PHP正则表达式(电话号码)

javascript 将数字添加到 width()