在?React?Native?中給第三方庫打補(bǔ)丁的過程解析
有時使用了某個React Native 第三方庫,可是它有些問題,我們不得不修改它的源碼。本文介紹如何修改源碼又不會意外丟失修改結(jié)果的方法。
我們可能不方便給原作者提 Pull Request,因為他們可能不愿意接受我們的更改。又或者原作者無法及時發(fā)布新版本。
種種原因,我們只有去修改 node_modules 目錄下的文件。
可是當(dāng)我們執(zhí)行 yarn install
或 yarn add
時,原先的修改會丟失。
有沒有辦法讓我們可以在 yarn install
或 yarn add
時,自動把修改的源碼加載進(jìn)來?
patch-package 來拯救!
安裝
安裝以下兩個 package:
yarn add patch-package postinstall-postinstall
大多數(shù)時候,當(dāng)你執(zhí)行 yarn add
、 yarn remove
或 yarn install
時,Yarn 會用原始的模塊完全取代你的 node_modules 的內(nèi)容。 patch-package 使用 postinstall
鉤子按照你的要求來修改這些原始模塊。
Yarn 只在 yarn install
和 yarn add
之后運(yùn)行 postinstall
鉤子,但不包括在 yarn remove
之后。postinstall-postinstall 包用來確保你的 postinstall
鉤子在 yarn remove
后也能被執(zhí)行。
配置 scripts
,確保每次執(zhí)行 yarn install
或者 yarn add
之后,都會自動執(zhí)行 patch-package
:
// package.json "scripts": { "postinstall": "patch-package", }
使用
首先對你的 node_modules 文件夾中的某個包的文件進(jìn)行修改,然后運(yùn)行
yarn patch-package package-name
譬如,我們的項目依賴了 react-native-system-setting 這個包,但是這個包已經(jīng)不再更新了,而 React Native 的新版本要求每一個發(fā)布事件的模塊,必須實現(xiàn)以下兩個方法:
@ReactMethod public void addListener(String eventType) { // do nothing } @ReactMethod public void removeListeners(int count) { // do nothing }
那么我們可以修改這個包的源碼,添加這兩個方法,然后運(yùn)行
yarn patch-package react-native-system-setting
可以看到,在根目錄下,創(chuàng)建了一個 patches 文件夾,里面有一個補(bǔ)丁文件,記錄了對 react-native-system-setting 的修改。
這樣就不怕補(bǔ)丁丟失了。
示例
這里有 一個示例 ,供你參考。
到此這篇關(guān)于在 React Native 中給第三方庫打補(bǔ)丁的過程解析的文章就介紹到這了,更多相關(guān)React Native第三方庫打補(bǔ)丁內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
react.js使用webpack搭配環(huán)境的入門教程
本文主要介紹了react 使用webpack搭配環(huán)境的入門教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-08-08ES6 class類鏈?zhǔn)嚼^承,實例化及react super(props)原理詳解
這篇文章主要介紹了ES6 class類鏈?zhǔn)嚼^承,實例化及react super(props)原理,結(jié)合實例形式詳細(xì)分析了ES6 中class類鏈?zhǔn)嚼^承,實例化及react super(props)原理相關(guān)概念、原理、定義與使用技巧,需要的朋友可以參考下2020-02-02