如何在yarn之后每次自动做一个流程?

How to do a flow of work automaticlly each time after yarn?

一个项目需要一个依赖项,它需要B。我想更改 B 中的一些代码。但是每次我重新运行yarn(添加新的依赖),这些更改都回滚了。

例如:在我的 react-native 项目中我需要 "react-navigation": "^2.0.1",在 react-navigation's package.json 中也需要 "react-native-safe-area-view": "^0.8.0"。我更改了 react-native-safe-area-view/index.js 中的一些代码,因为很难升级 react-navigation。

另一个例子:同一个项目我在 RNCamere.m(Objective-C) 中更改了一些代码,在 node_modules/react-native-camera/ios/RN/RNCamera.m 中。好难升级react-native-camera.

但是每次我添加新的依赖(yarn add)这些更改都被回滚了。所以我必须再次做同样的事情。而我的伙伴们也不得不一次又一次地做同样的事情。

有什么好的方案可以优化这个工作流程吗?我真的不想做同样的工作。

我认为每次在 yarn 之后使用 sed 更改这些文件是一个好方法,但我必须编写很长的脚本来修复它。还有其他建议吗?

你应该在你的一个仓库中创建一个 react-native-safe-area-view 项目的分支。然后在你的 package.json 中添加类似这样的依赖项:

"react-native-android-action-sheet": "git+ssh://git@url_of_your_fork/react-native-safe-area-view.git#v0.0.1",

我的情况是:项目依赖A,A依赖B,A也依赖C,C也依赖B

node_modules:
  react-native-safe-area-view@0.8.0     -> B@0.8.0
  react-navigation@2.2.0                -> A
  react-navigation-tabs@0.5.0           -> C
    node_modules:
      react-native-safe-area-view@0.7.0 -> B@0.7.0

我的解决方案是:

  1. 在 github
  2. 上分叉这三个项目
  3. git 恢复到标记版本
  4. 修改需要修改的代码
  5. 修改A的package.json为git+https://github.com/MYNAME/C.git/#mytag
  6. 修改B的package.json为git+https://github.com/MYNAME/C.git/#mytag
  7. 修改A的package.json为git+https://github.com/MYNAME/B.git/#mytag
  8. 修改项目的package.json为git+https://github.com/MYNAME/A.git/#mytag

这样问题就解决了。这是一次艰难(糟糕)的尝试。

github 问题详情如下:https://github.com/react-navigation/react-navigation/issues/5205