如何以干净的方式分叉现有的 Meteorite 包?

2024-01-16

我正在尝试找出在项目中分叉 Atmosphere 上现有包的最佳/最干净的方法。我遇到过一些情况,现有的包需要一些修改,我被迫分叉它。

据我所知,存在以下选项。不幸的是,所有这些都有自己的问题,我还没有找到完美的解决方案。我会用meteor-router举个例子:

1. 只需将包文件复制到您的包文件夹中

Steps:

  • remove packages/router/.git/
  • edit packages/.gitignore并删除“路由器”行
  • 从您的路由器中删除路由器smart.json
  • add packages/router到您的项目存储库并提交
  • 现在进行更改(这样您的初始提交是一个干净的版本,您可以自己找出更改的内容)

优点:

  • 容易实现和理解
  • 您所依赖的所有代码都可以在您的项目存储库中找到

缺点:

  • 你会丢失所有原始存储库历史记录
  • 很难更新到新版本
  • 很难将您的更改贡献回原始项目

除了最简单的包之外,甚至不要考虑这个!

2.在github上fork,然后...

要在 github 上 fork 一个包,你可以检查你的smart.lock文件以查看正在使用哪个存储库。转到该存储库的 github 页面并分叉它。

接下来,您有三个选择:

2a.将其添加为 git 子模块

有关 git 子模块的更多信息:http://git-scm.com/book/en/Git-Tools-Submodules http://git-scm.com/book/en/Git-Tools-Submodules

Steps:

  • 有关如何初始化/创建/更新子模块的信息,请参阅上面的链接
  • 从您的设备中取出该软件包smart.json

优点:

  • 子模块版本已连接到您的项目
  • 更改立即生效

缺点:

  • 所有开发者都需要运行git submodule init第一次和update更新
  • 编辑结账时必须注意子模块的问题
  • 了解子模块的其他问题

2b.编辑您的项目smart.json使用您的版本

Steps:

  • In your smart.json, find "router": {}并添加"git": "https://github.com/USER/meteor-router.git"里面是空的{}.
  • (可选)添加一个"branch" or "tag".

优点:

  • 您仍然可以使用 Meteorite 来管理您的外部包
  • 将自动为其他开发人员和部署环境工作

缺点:

  • 包文件夹中的代码不可编辑,因为它不是 git 存储库
  • 每次运行 Meteorite 时,它​​不会自动更新到最新版本

(Meteorite 改进建议:允许以可编辑的形式安装包,就像 Python 的 pip 允许使用“-e”参数一样)

2c.在项目外部克隆并添加"path" to smart.json

Steps:

  • 将包克隆到项目之外的位置
  • 与2b类似,添加一个"path"给你的smart.json将 Meteorite 指向您当地的结帐处

优点:

  • 您可以随意编辑包,Meteor 将自动拾取更改。

缺点:

  • 如果你犯了这个smart.json,您很可能会破坏所有其他开发/部署环境......

您使用哪种方法?您如何解决该方法的缺点?

我可能错过了这些解决方案的一些问题。


对于 Meteor 1.0,我推荐以下内容:

  1. 设置本地包文件夹

    $ mkdir "$HOME/code/packages"
    
  2. Add the PACKAGE_DIRS环境变量到你的.bashrc/.zshrc file

    export PACKAGE_DIRS="$HOME/code/packages"
    
  3. 分叉并克隆存储库

    $ cd "$HOME/code/packages"
    $ git clone <yourGithubFork>
    
  4. 从您的文件系统安装软件包

    $ meteor add <packagenamespace>:<packagename>
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以干净的方式分叉现有的 Meteorite 包? 的相关文章

  • Meteor:未捕获 RangeError:超出最大调用堆栈大小

    我对流星很陌生 我正在做简单的应用程序 这是我遇到的问题 Template newFeedForm events submit new feed form event event preventDefault const target ev
  • Meteor-AutoForm:如何根据另一个控件更新选择选项

    我一直在寻找一些问题的答案 这些问题应该非常简单 但我一生都无法弄清楚 基本上我有一个带有两个选择控件的meteor autoform
  • 我怎样才能完成反应日期

    我正在创建消息列表 显示消息发送的时间 这是我的留言集 Messages new Mongo Collection messages Messages attachSchema new SimpleSchema created type D
  • 文件正在被分配一个 //# sourceMappingURL 但已经有一个

    我只是注意到 Firefox 控制台为我的项目中的每个 js coffee 文件 甚至是包 输出以下错误 file is being assigned a sourceMappingURL but already has one Chrom
  • 如何在 Meteor 中缓存数据?

    感谢大家 最近我想在meteor上建立一个小型cms 但有一些问题 1 缓存 页面缓存 数据缓存等 例如 当人们搜索某篇文章时 在服务器端 Meteor publist articles function keyword return Ar
  • 如何更改Accounts-UI模板?

    根据望远镜 http demo telesc pe 例子 源代码 https github com SachaG Telescope 可以显示自定义的 account ui 表单 参见他的用户登录 html https github com
  • “栅栏已经激活——来不及添加写入”

    下面的错误信息是什么意思 栅栏已经激活 来不及添加写入 以下是如何获取它的示例 环境 Mac OS X http en wikipedia org wiki Mac OS X Lion 流星0 3 8 项目创建 meteor create
  • 使用 Fourseven:scss 在 Meteor 中加载 css

    我正在使用 fourseven scss 来编译 scss 文件 如果我包括我的 这似乎工作正常 scss客户端目录下的文件 不过我想把它们留在我的组件附近 imports ui stylesheets 或者就在组件旁边 imports u
  • Meteor 访问令牌

    使用时Meteor http meteor com 与新的验证 https github com meteor meteor tree auth系统 我怎样才能获得facebook访问令牌 当登录时accounts facebook包裹 从
  • 使用forever运行meteor生成的节点包的正确语法是什么?

    在文档中 在您自己的服务器上运行meteor的过程是运行 meteor bundle bundle tgz 然后提取这个 tarball tar xzvf bundle tgz 然后启动一个节点服务器 MONGO URL mongodb l
  • 在 Win7 上捆绑 Meteor 应用程序时出现 ENOTEMPTY 和 EPERM 异常? :(

    Help 我已经使用 Meteor 工作了大约两个月了 在我的 OSX 家庭环境中一切都进展顺利 但我最近将其中一些代码带入了工作中的 Windows 7 环境中 而 Meteor 在 Windows 上的行为却有所不同 具体来说 代码捆绑
  • 重新渲染模板时的 Meteor 回调

    我目前有一个模板 其中包含 each 在其中循环 我正在尝试找到一种方法来触发特定功能 each 循环已完成 Template rendered仅在第一次渲染模板时运行 因此不幸的是 这不起作用 有什么可以做到这一点吗 我就是这样做的 Te
  • 如何在流星模板中设置日期格式

    我需要以 mm dd yyyy 格式显示数据库中的日期 因为它以 ISO 格式保存在mongodb如何在模板中转换它 这是我的代码 Template templatename vname function return Posts find
  • Meteor js:使Session对象部分持久化

    在我的流星应用程序中 我使用会话来存储有关用户活动的临时信息 我想使用 amplify js 将此信息的某些部分保留到浏览器 但不是全部 我想要一种拥有 临时 会话密钥和 持久 会话密钥的方法 例如我可以打电话 Session set pe
  • 如何使用 Meteor Spacebars 模板动态渲染 HTML?

    假设我正在存储 div name div and div age div 在我的数据库中 然后我想获取第一个 HTML 字符串并将其呈现在模板中 gt template1 它只渲染第一个字符串 name 车把在里面 然后我想给出新生成的模板
  • 从外部应用程序对流星用户进行身份验证

    我有一个流星应用程序 带有流星帐户 并且正在构建一个移动应用程序 如何通过移动应用程序对用户进行身份验证 我有一个 python web 服务 可以将数据发送到移动客户端 但我不知道如何从外部应用程序进行身份验证 我确实查看了DDP客户端
  • Meteor 抛出 throwIfSelectorIsNotId 异常

    运行某些代码时 Meteor 会抛出 throwIfSelectorIsNotId 异常 我有两个客户端运行相同的代码 当第二个客户端运行相同的代码时会引发异常 无法弄清楚这个异常的含义以及抛出的原因 希望有人能够解释一下 对于客户端上的某
  • Meteor 发布错误 - 发布函数返回非游标数组

    我有这个出版物 Meteor publish temsInThisCompetition function id var teams return Competitions find id fetch map function doc fo
  • 如何在 Ubuntu VirtualBox 中运行 Meteor 应用程序并使用 Windows 主机上的编辑器进行编辑?

    我希望在运行 Ubuntu 的 virtualbox 来宾中运行一个用于开发目的的流星服务器 该项目将位于主机上的一个文件夹内 该文件夹将共享给来宾 该文件夹本身位于 Dropbox 文件夹内 这样我可以在多个虚拟机和工作站之间共享开发 但
  • 在 Meteor 中运行示例的问题

    我正在测试 Meteor 示例 这是我运行时看到的meteor在待办事项示例中 Unexpected mongo exit code 100 Restarting Unexpected mongo exit code 100 Restart

随机推荐