【问题标题】:How to Override Meteor Core Packages in a Project?如何在项目中覆盖 Meteor Core 包?
【发布时间】:2016-10-27 02:01:47
【问题描述】:

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

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

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

然后我尝试将 git clone 他们添加到项目的 packages 目录中,就像使用社区包一样,但这也不起作用,因为克隆命令失败 (fatal: repository ... not found) 并且包也不是在 .meteor/packages 文件中显式调用。

有什么想法吗?

【问题讨论】:

标签: javascript git meteor meteor-packages


【解决方案1】:

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

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

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

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

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

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

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

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

  1. 克隆流星存储库:

    git 克隆 https://github.com/meteor/meteor.git

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

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

只静态下载包目录

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

这是通过发出:

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

例如:

devel 分支克隆ddp-client

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

或来自master 分支:

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

注意事项:

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

【讨论】:

  • 您好,它确实有效,使用方法 1,然后软链接包并添加 meteor add ddp-client
  • 确实如此,但它有很多开销。小心使用。
猜你喜欢
  • 2013-09-10
  • 1970-01-01
  • 2016-05-21
  • 2022-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多