如何在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
我的解决方案是:
- 在 github
上分叉这三个项目
- git 恢复到标记版本
- 修改需要修改的代码
- 修改A的
package.json
为git+https://github.com/MYNAME/C.git/#mytag
- 修改B的
package.json
为git+https://github.com/MYNAME/C.git/#mytag
- 修改A的
package.json
为git+https://github.com/MYNAME/B.git/#mytag
- 修改项目的
package.json
为git+https://github.com/MYNAME/A.git/#mytag
这样问题就解决了。这是一次艰难(糟糕)的尝试。
github 问题详情如下:https://github.com/react-navigation/react-navigation/issues/5205
一个项目需要一个依赖项,它需要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
我的解决方案是:
- 在 github 上分叉这三个项目
- git 恢复到标记版本
- 修改需要修改的代码
- 修改A的
package.json
为git+https://github.com/MYNAME/C.git/#mytag - 修改B的
package.json
为git+https://github.com/MYNAME/C.git/#mytag - 修改A的
package.json
为git+https://github.com/MYNAME/B.git/#mytag - 修改项目的
package.json
为git+https://github.com/MYNAME/A.git/#mytag
这样问题就解决了。这是一次艰难(糟糕)的尝试。
github 问题详情如下:https://github.com/react-navigation/react-navigation/issues/5205