如何在项目中使用 npm 包的 fork 版本

Posted

技术标签:

【中文标题】如何在项目中使用 npm 包的 fork 版本【英文标题】:How to use fork version of npm package in a project 【发布时间】:2018-04-17 18:06:28 【问题描述】:

假设有一个名为 abcd 的 npm 包。 通常在package.json 中,我们将依赖项指定为 "abcd": "^1.0.0",

但是这个abcd 没有按预期工作,所以我在https://github.com/mygithubid/abcd 中分叉(并修改)了它

然后我运行npm install git+https://git@github.com/mygithubid/abcd.git 并在package.json 中,定义更改为 "abcd": "git+https://github.com/mygithubid/abcd.git",

重新启动使用这个abcd的项目后,现在它会抛出错误 Module not found: Can't resolve 'abcd' ...即使我看到 abcd 文件夹被添加到 node_modules

您能指出我在上面犯的错误吗?谢谢!

【问题讨论】:

How to install an npm package from GitHub directly?的可能重复 npm install github:mygithubid/abcd 。退房 其实node_modules中添加了新的abcd,但是应用还是报错Module not found: Can't resolve 'abcd' 如果您不介意分叉并在本地下载:***.com/questions/14381898/… 谢谢,Alon,如果我需要在本地下载,问题不大……我正在尝试在 Github.com 中分叉并在 Github.com 中进行修改。这不是常用的方法吗? 【参考方案1】:

一个相当干净的选择是使用patch-package: https://www.npmjs.com/package/patch-package

如果使用您的项目的人可能使用 npm 或 yarn,请记住让补丁对两者都可用。 patch-package --use-yarn 下的更多信息。

补丁还是分叉?见https://www.npmjs.com/package/patch-package#benefits-of-patching-over-forking

【讨论】:

救了我的命。谢谢!【参考方案2】:

确保 github 存储库包含编译文件,大多数情况下您需要先为 npm 构建包,编译文件仅推送到 NPM。 要了解如何构建包,请查看 package.json 文件

【讨论】:

您能否提供更详细的步骤来“了解如何构建软件包”或至少参考指南? @lacostenycoder 它取决于插件本身。不可能给出一个普遍的答案。无论如何,如果你不知道从哪里开始,你可以打开package.json文件并检查scripts属性,它通常包含一个build脚本。

以上是关于如何在项目中使用 npm 包的 fork 版本的主要内容,如果未能解决你的问题,请参考以下文章

npm - 如何显示包的最新版本

npm 如何查看一个包的版本信息?

如何确定给定 npm 包的最受欢迎版本?

在升级之前如何查看 npm 包的发行说明?

查找已安装 npm 包的版本

查找已安装 npm 包的版本