你如何修改其他的库/模块?

时间:2018-06-02 22:04:17

标签: react-native react-native-gifted-chat

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

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

我该怎么做?我是否需要克隆源代码然后修改它以满足我的需要?

1 个答案:

答案 0 :(得分:4)

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

  • 该过程与使用其他模块不一致
  • 另一个npm install将覆盖您的更改
  • 希望实施该功能的其他人无法使用您的解决方案

不良解决方案

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

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

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

    更好的解决方案

    分享repo是维护特定于该模块的提交的好方法,您可以将您的修改分享给开源社区。在Github帮助维基中解释了一些reasons to fork,但这样做很简单。

    1. 导航到您要更改的包的Github仓库
    2. 按右上角的Fork按钮
    3. 项目根目录中的
    4. npm install git+your-forked-repo-url(不要忘记npm uninstall旧目录)
    5. 现在,您可以按照错误解决方案中提到的过程在本地测试对该程序包的更改。在您对它们感到满意之后,您可以将这些更改复制到您的分叉存储库并将它们推送到Github(您可能需要更新您的版本,但是如果您想要将更改合并到上游回购)。然后另外npm install您的回购邮件会使node_modules文件夹中的更改更加永久。

      如果您希望及时了解您所分配的回购,Github会解释流程here

      TL; DR

      选择更好的解决方案