如何覆盖项目中的 Meteor 核心包?
How to Override Meteor Core Packages in a Project?
对于 Meteor 项目,我想更改 Meteor Core 库文件。
这可能吗?如果可能,怎么做?
到目前为止,我已经尝试将文件复制到我的项目目录中,希望相应的对象只是从原始对象中覆盖,但问题是相关函数或变量仅在本地定义。
然后我尝试将它们 git clone
放入项目的 packages
目录中,就像使用社区包一样,但是由于克隆命令失败(fatal: repository ... not found
) 并且包没有在 .meteor/packages 文件中显式调用。
有什么想法吗?
Meteor 允许在项目中包含本地包,包括覆盖现有(社区或核心)包的包。
虽然在本地覆盖社区包通常只需要将 GitHub 存储库克隆(或提取或添加为子模块)到 /packages
文件夹中,但核心包目前位于主目录的子目录中meteor/meteor
存储库,这使得克隆它们变得更加棘手。
覆盖核心包可能需要您手动将更改应用于包作为 Meteor 或包更新(因为 Meteor 过去依赖于特定的包版本)。
因此,在采取此步骤之前,确保您确实需要这样做。
确保您不能使用本地文件或您自己的本地包进行更改(例如,通过包装或替换函数或对其进行猴子修补)。
我使用了几种方法来覆盖核心包。
克隆整个存储库和link目录
如果您想将您的更改贡献给项目,这将很有用。您可能应该 fork 存储库并克隆您自己的 fork。
克隆流星存储库:
git clone https://github.com/meteor/meteor.git
或
git clone git@github.com:<username>/meteor.git
如果你分叉了它
- Link 包目录(在你项目的
packages
目录中)
ln -s ../../(...)/meteor/packages/
当然,您可以签出所需的 branch/commit 并将它们复制到本地 packages
目录。
只静态下载包目录
有一个巧妙的技巧可以让您使用 svn
.
从 GitHub 下载给定目录
这是通过发布获得的:
svn export https://github.com/meteor/meteor/[trunk|branches/]/packages/
例如:
从 devel
分支克隆 ddp-client
:
svn export https://github.com/meteor/meteor/branches/devel/packages/ddp-client
或来自 master
分支:
svn export https://github.com/meteor/meteor/trunk/packages/ddp-client
备注:
- 如前所述,如果您更新 Meteor,您可能需要手动应用更改。
- 如果您还没有将包添加到项目 (
meteor add <package>
),请不要忘记。
- Meteor 预计会在某个时候切换到 NPM(可能在 Meteor v1.5 中),因此请确保仅对 Meteor 自己的打包系统使用此答案中指定的方法。
对于 Meteor 项目,我想更改 Meteor Core 库文件。
这可能吗?如果可能,怎么做?
到目前为止,我已经尝试将文件复制到我的项目目录中,希望相应的对象只是从原始对象中覆盖,但问题是相关函数或变量仅在本地定义。
然后我尝试将它们 git clone
放入项目的 packages
目录中,就像使用社区包一样,但是由于克隆命令失败(fatal: repository ... not found
) 并且包没有在 .meteor/packages 文件中显式调用。
有什么想法吗?
Meteor 允许在项目中包含本地包,包括覆盖现有(社区或核心)包的包。
虽然在本地覆盖社区包通常只需要将 GitHub 存储库克隆(或提取或添加为子模块)到 /packages
文件夹中,但核心包目前位于主目录的子目录中meteor/meteor
存储库,这使得克隆它们变得更加棘手。
覆盖核心包可能需要您手动将更改应用于包作为 Meteor 或包更新(因为 Meteor 过去依赖于特定的包版本)。
因此,在采取此步骤之前,确保您确实需要这样做。
确保您不能使用本地文件或您自己的本地包进行更改(例如,通过包装或替换函数或对其进行猴子修补)。
我使用了几种方法来覆盖核心包。
克隆整个存储库和link目录
如果您想将您的更改贡献给项目,这将很有用。您可能应该 fork 存储库并克隆您自己的 fork。
克隆流星存储库:
git clone https://github.com/meteor/meteor.git
或
git clone git@github.com:<username>/meteor.git
如果你分叉了它- Link 包目录(在你项目的
packages
目录中)ln -s ../../(...)/meteor/packages/
当然,您可以签出所需的 branch/commit 并将它们复制到本地packages
目录。
只静态下载包目录
有一个巧妙的技巧可以让您使用 svn
.
这是通过发布获得的:
svn export https://github.com/meteor/meteor/[trunk|branches/]/packages/
例如:
从 devel
分支克隆 ddp-client
:
svn export https://github.com/meteor/meteor/branches/devel/packages/ddp-client
或来自 master
分支:
svn export https://github.com/meteor/meteor/trunk/packages/ddp-client
备注:
- 如前所述,如果您更新 Meteor,您可能需要手动应用更改。
- 如果您还没有将包添加到项目 (
meteor add <package>
),请不要忘记。 - Meteor 预计会在某个时候切换到 NPM(可能在 Meteor v1.5 中),因此请确保仅对 Meteor 自己的打包系统使用此答案中指定的方法。