React Nativeのアプリにとあるライブラリを入れたところビルドが失敗するようになってしまった。
実はこのライブラリってのがもうあまり活発に動いていないライブラリなんだけれど、同様の機能を持つ有償パッケージを入れるか、自前で作るかみたいな事情なのでひとまずこれを入れて対応するかってなったんだけどAndroidだけビルドが失敗するようになってしまった。
失敗する理由はとあるdeprecatedなgradleのプロパティが設定されていたため。対応としてはその一行を削除するだけなんだけど、PRするにしても取り込まれるのいつになるかわからないし、forkするのもなってことでパッチをあてることにした。
ただ、node_modules配下にインストールされているものを手動で変更するのは入れ直しのたびにやらなければいけなくなるし、他の人にも共有しないといけなくなる。
というわけでpatch-package
というライブラリである。npmにはpostinstallで任意の処理を実行できる仕組みがあるんだけどそこでパッチを当ててくれるようになるっていうもの。さらにパッチファイルの生成も行ってくれるのである。つまり、このパッチファイルもGitに入れておけば全員が意識せずにパッチがあたるというわけ。
やることは簡単。
まずはインストール。yarnを使ってる場合はpostinstall-post-install
も入れる必要がある。
yarn add -D patch-package postinstall-postinstall
package.json
に以下を追加する。もちろんscripts
の既存のものに加えて、だ。
"scripts": { "postinstall": "patch-package" },
そうしたらnode_modules
以下にある修正したいファイルを直接修正する。
最後に以下のコマンドを実行する。
yarn patch-package パッケージ名
npmを使っている場合はnpx patch-package パッケージ名
だ。
実行したらpatches
フォルダが作成され、中には対象のパッケージ名を含むファイル名でパッチファイルが作成されている。あとはこれをGitにコミットしてプッシュするだけである。
本当はパッチでの運用はよくないけどまあこういうのもあるよってことで。
以上