在?React?Native?中給第三方庫打補丁的過程解析
有時使用了某個React Native 第三方庫,可是它有些問題,我們不得不修改它的源碼。本文介紹如何修改源碼又不會意外丟失修改結果的方法。
我們可能不方便給原作者提 Pull Request,因為他們可能不愿意接受我們的更改。又或者原作者無法及時發(fā)布新版本。
種種原因,我們只有去修改 node_modules 目錄下的文件。
可是當我們執(zhí)行 yarn install 或 yarn add 時,原先的修改會丟失。
有沒有辦法讓我們可以在 yarn install 或 yarn add 時,自動把修改的源碼加載進來?
patch-package 來拯救!
安裝
安裝以下兩個 package:
yarn add patch-package postinstall-postinstall
大多數(shù)時候,當你執(zhí)行 yarn add 、 yarn remove 或 yarn install 時,Yarn 會用原始的模塊完全取代你的 node_modules 的內(nèi)容。 patch-package 使用 postinstall 鉤子按照你的要求來修改這些原始模塊。
Yarn 只在 yarn install 和 yarn add 之后運行 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 文件夾中的某個包的文件進行修改,然后運行
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
}那么我們可以修改這個包的源碼,添加這兩個方法,然后運行
yarn patch-package react-native-system-setting
可以看到,在根目錄下,創(chuàng)建了一個 patches 文件夾,里面有一個補丁文件,記錄了對 react-native-system-setting 的修改。

這樣就不怕補丁丟失了。
示例
這里有 一個示例 ,供你參考。
到此這篇關于在 React Native 中給第三方庫打補丁的過程解析的文章就介紹到這了,更多相關React Native第三方庫打補丁內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
react.js使用webpack搭配環(huán)境的入門教程
本文主要介紹了react 使用webpack搭配環(huán)境的入門教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-08-08
ES6 class類鏈式繼承,實例化及react super(props)原理詳解
這篇文章主要介紹了ES6 class類鏈式繼承,實例化及react super(props)原理,結合實例形式詳細分析了ES6 中class類鏈式繼承,實例化及react super(props)原理相關概念、原理、定義與使用技巧,需要的朋友可以參考下2020-02-02

