将 GitHub 项目的分支发布到新的 NPM 模块,但保留与原始项目合并的选项?

问题描述 投票:0回答:3

GitHub 和 NPM 上有高质量的开源存储库,拥有广泛的用户基础。

我已经分叉了该项目并进行了实质性扩展。我认为已经准备好合并回来了。但(适当地)是项目所有者可以做出这个决定,而不是我。现在已经好几个星期没有回复了。

一些用户在回购问题讨论中要求将其合并回来,还有更多用户直接联系我以将其作为单独的项目发布到 NPM。

认真的开发人员可以通过 GitHub 获取新版本,但它只有原始源代码,而不是链接/缩小/定制版本,因为自述文件表示不要运行

make dist
,直到它合并回来并且版本号增加为止。

认为它应该像创建这个分叉的分叉一样简单,并将其发布为新的 NPM 模块。但 GitHub 不允许我这样做(“你已经在查看这个项目了”)

有没有办法可以将其发布为新的 NPM 模块,但仍保留

的选项
  1. 我的分叉向原始版本提交拉取请求
  2. 我的分叉从原始版本中获取上游更改
  3. 我的子分支从我的分支(以及原始分支)获取上游更改

我是否需要使用新电子邮件地址创建新的 GitHub 帐户?

在 GitHub 中分叉我的存储库

node.js git github merge fork
3个回答
22
投票

如何分叉和修补 npm 模块

  1. 在 GitHub 上分叉该项目。
  2. 将叉子克隆到您的机器上
  3. 修复错误或添加您想要的功能。
  4. 将您的提交推送到 GitHub 上的分支(如果您希望为原始存储库创建 PR,请使用分支)。
  5. 在 GitHub 上打开您的分支,找到并复制您所做的最新提交的 SHA。
  6. 打开您的

    package.json
    文件,并将 MODULE、USER、REPO 和 SHA 替换为 GitHub 存储库中的信息。

    "MODULE": "https://github.com/USER/REPO/tarball/SHA",
    

    例如:从 this commit

    获取 tarball 链接
    "react-remarkable": "https://github.com/HelloKip/react-remarkable/tarball/9549e776136096b827f3a0823329ad997416e364",
    
  7. 运行

    npm i
    安装模块依赖项。

  8. 利润!

改编自 debuggable.comcmwelsh.com


4
投票

@user2943490 为您提供了使用分支而不是额外的分叉的正确解决方案。

让我扩展这个问题来回答您关于仍然能够在多个方向上推或拉的问题。 git,或者更确切地说,它的数据结构的设计方式使得您可以“始终”在任意存储库之间推送和拉取,无论如何。即使他们从来没有共同的祖先,这也没有什么区别。 是的,你可能会发生激烈的冲突,显然如果你尝试合并完全不相关的文件,混乱可能会随之而来,但这仍然是可能的。 Git 只关心文件的实际内容,而不关心它们是从哪里分叉的。

在您的示例中,由于您

will

与上游有共同的提交,因此它永远不会成为问题。


0
投票
npm-fork

发布原始包的分支:

提交或阶段更改,您不想让补丁弄乱。
  1. 构建项目。
  2. npm-fork publish --scope @user
  3. npm-fork publish --scope @user --package @origin/*
    用于单一存储库。
    
    
  4. 它将用预发布版本修补
package.json

require
列出的 JavaScript 文件 (
import
/
export
/
npm-packlist
)(即最终将打包的文件),使用
npm publish
发布它,以及
git restore .
发布后。
要在不发布和恢复的情况下进行修补,只需运行 

npm-fork patch

而不是

npm-fork publish
    

© www.soinside.com 2019 - 2024. All rights reserved.