日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

在?React?Native?中給第三方庫打補丁的過程解析_React

作者:todoit?lv-4 ? 更新時間: 2022-09-27 編程語言

有時使用了某個React Native 第三方庫,可是它有些問題,我們不得不修改它的源碼。本文介紹如何修改源碼又不會意外丟失修改結果的方法。

我們可能不方便給原作者提 Pull Request,因為他們可能不愿意接受我們的更改。又或者原作者無法及時發布新版本。

種種原因,我們只有去修改 node_modules 目錄下的文件。

可是當我們執行?yarn install?或?yarn add?時,原先的修改會丟失。

有沒有辦法讓我們可以在?yarn install?或?yarn add?時,自動把修改的源碼加載進來?

patch-package?來拯救!

安裝

安裝以下兩個 package:

yarn add patch-package postinstall-postinstall

大多數時候,當你執行?yarn add?、?yarn remove?或?yarn install?時,Yarn 會用原始的模塊完全取代你的 node_modules 的內容。 patch-package 使用?postinstall?鉤子按照你的要求來修改這些原始模塊。

Yarn 只在?yarn install?和?yarn add?之后運行?postinstall?鉤子,但不包括在?yarn remove?之后。postinstall-postinstall 包用來確保你的?postinstall?鉤子在?yarn remove?后也能被執行。

配置?scripts?,確保每次執行?yarn install?或者?yarn add?之后,都會自動執行?patch-package?:

// package.json
"scripts": {
    "postinstall": "patch-package",
}

使用

首先對你的 node_modules 文件夾中的某個包的文件進行修改,然后運行

yarn patch-package package-name

譬如,我們的項目依賴了 react-native-system-setting 這個包,但是這個包已經不再更新了,而 React Native 的新版本要求每一個發布事件的模塊,必須實現以下兩個方法:

@ReactMethod
public void addListener(String eventType) {
    // do nothing
}

@ReactMethod
public void removeListeners(int count) {
    // do nothing
}

那么我們可以修改這個包的源碼,添加這兩個方法,然后運行

yarn patch-package react-native-system-setting

可以看到,在根目錄下,創建了一個 patches 文件夾,里面有一個補丁文件,記錄了對 react-native-system-setting 的修改。

這樣就不怕補丁丟失了。

示例

這里有?一個示例?,供你參考。

原文鏈接:https://juejin.cn/post/7127441901988347918

欄目分類
最近更新