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

pro*_*ype 15 git merge fork github node.js

GitHub和NPM上存在高质量的开源代码库,拥有广泛的用户群.

我已经分叉了这个项目并做了大量的扩展.我认为已准备好合并回来.但(适当地)它的项目所有者谁打电话不是我.现在已经好几周没有回复了.

一些用户已经在回购问题讨论中询问了这个被合并回来的问题,并且更多的用户直接与我联系以作为单独的项目发布到NPM.

严肃的开发人员可以通过GitHub获得新版本,但它只有原始源,而不是链接/缩小/定制版本,因为README表示make dist在它合并回来并且版本号递增之前不会运行.

认为它应该像创建这个fork的fork一样简单,并将其作为新的NPM模块发布.但GitHub不允许我这样做("你已经在看这个项目")

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

  1. 我的fork向原始提交拉取请求
  2. 我的fork从原来获取上游更改
  3. 我的子fork从我的fork获取上游更改(因此原始)

我是否在新的电子邮件地址下创建了新的GitHub帐户?

在GitHub中分叉我的仓库的叉子

Bea*_*ith 11

如何分叉和修补npm模块

  1. 在GitHub上挖掘项目.
  2. 将叉子克隆到您的机器上
  3. 修复错误或添加所需的功能.
  4. 将您的提交推送到GitHub上的分支(如果您希望为原始仓库创建PR,请使用分支).
  5. 在GitHub上打开你的fork,找到并复制你所做的最新提交的SHA.
  6. 打开package.json文件,用GitHub repo中的信息替换MODULE,USER,REPO和SHA.

    "MODULE": "https://github.com/USER/REPO/tarball/SHA",
    
    Run Code Online (Sandbox Code Playgroud)

    例如:从此提交中获取tarball链接

    "react-remarkable": "https://github.com/HelloKip/react-remarkable/tarball/9549e776136096b827f3a0823329ad997416e364",
    
    Run Code Online (Sandbox Code Playgroud)
  7. 运行npm i以安装模块依赖项.

  8. 利润!

改编自debuggable.comcmwelsh.com.

  • 这不适用于需要在消费前处理(例如通过`prepublish` 脚本)的包,是吗? (3认同)
  • 这是一个很好的信息,但它并没有回答最初对使用前需要处理(转译、缩小等)的包的担忧。 (2认同)
  • 本文介绍了如何使用“postinstall”脚本编译您的分叉版本。https://link.medium.com/hljD5UiRdeb (2认同)
  • 基本上这个 ```"scripts": { ... "postinstall": "cd ./node_modules/my-forked-project && npm install && npm run build" }``` (2认同)

Ano*_*noE 4

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

让我扩展这一点来回答您关于仍然能够在多个方向上推或拉的问题。git 的方式,或者更确切地说,它的数据结构的设计方式使得您始终可以在任意存储库之间推送和拉取,无论如何。即使他们从来没有共同的祖先,这也没有什么区别。

是的,你可能会发生激烈的冲突,显然如果你尝试合并完全不相关的文件,混乱可能会随之而来,但这仍然是可能的。Git 只关心文件的实际内容,而不关心它们是从哪里分叉的。

在您的示例中,由于您与上游进行共同提交,因此这永远不会成为问题。