您如何修改他人的图书馆/模块?

Vũ *_*Duy 2 react-native react-native-gifted-chat

我想将Card组件添加到此模块:https : //snack.expo.io/@xcarpentier/gifted-chat(演示)

例如,如果onLongPress()在气泡消息上使用,我希望显示其他信息(在气泡消息的正下方,作为小卡片,例如Tinder卡)。

我怎么做?我是否需要克隆源代码,然后对其进行修改以适合我的需要?

Ezr*_*zra 5

尽管您可以编辑文件node_modules夹中的文件,但这不是一个很好的长期解决方案。为什么不?

  • 该过程与使用其他模块不一致
  • 另一个npm install会覆盖您的更改
  • 您的解决方案将不适用于想要实现该功能的其他人

不好的解决方案

如果您仍然想走这条路线,最快的方法是通过npm链接它。如果此链接不再可用,则可以按照以下步骤链接模块:

  1. 在终端中,导航到已修改的节点模块
  2. 使用创建全局符号链接 npm link
  3. 导航到您应用的根目录
  4. 与之链接的参考 npm link name-of-module

同样,这不是永久性的解决方案,仅应用于快速测试对模块的修改。

更好的解决方案

分叉存储库是维护特定于该模块的提交的好方法,并且您可以与开源社区共享您的修改。Github帮助Wiki中解释了分叉的一些原因,但是这样做很简单。

  1. 导航至您要更改的软件包的Github存储库
  2. 按下Fork右上角的按钮
  3. npm install git+your-forked-repo-url在您项目的根目录中(不要忘记npm uninstall旧目录)

现在,您可以按照错误解决方案中提到的过程在本地测试对该程序包的更改。对它们感到满意之后,您可以将这些更改复制到您的分叉存储库中,然后将其推送到Github(您希望更改版本,但是如果您想将更改与上游回购)。然后执行另一个npm install仓库,使这些更改在您的node_modules文件夹中更永久。

如果您想了解分叉的仓库的最新信息,Github会在此处说明该过程。

TL; DR

选择更好的解决方案

  • 分叉后,您可以在 package.json 中使用它,例如 "your-plugin-name": "https://github.com/your-username/forked-plugin", (3认同)