【问题标题】:NPM - Fork module, change code and send PR to authorNPM - 分叉模块,更改代码并将 PR 发送给作者
【发布时间】:2016-10-06 21:10:24
【问题描述】:

对于一个特定的 npm 包,我想创建一个带有一些代码更改的 PR。包的作者告诉我,从一个特定的分支创建一个 PR..

到目前为止一切正常,我可以更改 package.json 中的 url + 分支并将特定分支加载为 npm 模块。npm install 也可以正常工作。

但是我想更改该 node_modules/module 文件夹中的一些代码并从代码更改中创建一个 PR..

我唯一可以确定的是,首先将整个 repo 分叉到一个单独的文件夹中,而不是 checkout X 分支,而不是更改代码,每次我想检查时将其复制/粘贴到 node_modules/module 文件夹我的代码发生了变化。然后将其推送到我的个人 github 页面,然后从那里创建一个拉取请求。

但是每次都将我的更改复制/粘贴到 node_modules/module 文件夹中真的很令人沮丧。

更改 npm 包并为其创建 PR 的最佳方法是什么,同时仍将代码保留在 node_modules 文件夹中,以便可以检查代码更改?

谢谢!

【问题讨论】:

  • ????您只需要为模块分叉 repo 在您的 repo > commit > push > do PR 中进行更改 ...为什么要复制/过去???
  • 只需点击github上的“编辑”即可。
  • @SteevePitis,因为在 npm_modules 文件夹中创建一个 fork 感觉很奇怪
  • 你为什么要在那里 fork 模块?它就像一个新的存储库!
  • 因为每当我更改该 npm 包的代码时,仍然在我的项目中。我可以检查“更改”的 npm 模块是否按预期工作。我的项目大量使用 npm 包,所以它就像一个即时测试

标签: node.js git npm pull-request


【解决方案1】:

这是正确的做法。 fork github repo,创建那个人告诉你的分支,进行更改并发送拉取请求。

如果你想并行工作并假设 npm 不需要编译步骤,你可以在你的 node_modules 中克隆分叉的存储库并直接在那里工作。一旦您做出并提交更改,您就可以发送拉取请求。

编辑

我会说这是一种可以在 linux 上运行的可接受的方法:

~/projects/your-project/node_modules
~/projects/your-project/node_modules/name-of-module (symlink to the ~/projects/your-forked-cloned-repo)

~/projects/name-of-module (It should be your forked repo that you 've cloned from github/assembla etc)
~/projects/node_modules (symlink to the ~/projects/your-project/node_modules)

【讨论】:

  • 谢谢@Svabeal .. 但那是令人困惑的部分.. 我应该将它分叉到 node_modules 文件夹之外,而不是像你提到的那样在 node_modules 文件夹中再次克隆它吗?还是直接去 node_modules 文件夹,在那边做 fork?
  • @DutchKev - 我想你使用 github、assembla 或其他 git 提供程序。当您克隆存储库时,就像您将其复制到自己的空间中,然后您有权进行更改。 Git 不允许在您没有权限的存储库中进行更改。这是前叉部分。然后你可以在任何你想要的地方克隆分叉的 repo。您可以在 node_modules 中克隆它,也可以在外部克隆它。如果没有其他 3rd 方依赖项,您可以将其克隆到外部,然后创建一个从 node_modules 到您克隆它的路径的符号链接。
  • 啊!它确实开始有意义了:) 分叉与“下载”代码无关,它只是将代码复制到“空间”上,从而赋予写入权限。比你将它克隆(下载)到 node_modules 文件夹中,然后从那里你可以再次推送到“我的回购”。然后从那里创建 PR 到回购的原始所有者
  • @DutchKev 是的。我刚刚修改了答案,以包含一种在 linux 环境中开发时可以获得的方法(可能也适用于 windows,但我不知道如何在 windows 上创建符号链接:P)。这将涵盖您正在修改的模块需要的第 3 方模块的情况。
【解决方案2】:

你正在寻找npm link:

$ git clone your/npm-repo-fork
$ cd npm-repo-fork

# Link the project as a local dependency
$ npm link
$ cd ../some/other/project

# Use the linked project
$ npm link name-of-npm-dependency

# Now you can edit npm-repo-fork and the changes
# will be picked up by some/other/project
$ cd ../../../npm-repo-fork

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多