【問題解決】使用patch-package修改node-models中的源碼

文章目錄

  • 一、應用場景
  • 二、patch-package 和 postinstall
    • patch-package
    • postinstall
  • 三、操作步驟
    • 1、使用yarn安裝patch-package和postinstall-postinstall
    • 2、修改package.json
    • 3、修改node-model中源碼、保存。
    • 4、找到修改文件對應的包名
    • 5、使用git將新增的patches文件同步到倉庫
    • 6、新環境拉下倉庫,驗證修改是否成功。
  • 四、通過git維護自定義依賴庫
    • 修改方式

一、應用場景

最近在進行開源平臺的二開工作,有一些功能不可避免的需要改動一些依賴包的源碼,會修改node_models中的代碼。

在開發環境中,我們可以直接通過yarn gulp -> yarn start進行編譯測試,但是如果我想將代碼同步到倉庫時候則遇到了問題:一般不會將node_models文件進行同步,則別人拉下來的代碼依然是未修改的版本。

那么如何解決這個問題呢?

二、patch-package 和 postinstall

patch-package

patch-package 是一個用于修改第三方依賴包的工具,主要用途包括:

  • 臨時修復依賴包中的bug:當第三方庫有bug但未及時修復時,可以直接修改源碼
  • 定制化需求:對依賴包進行個性化修改以滿足特定需求
  • 緊急修復:在等待官方修復期間,使用本地補丁解決問題

使用流程

  1. 安裝 patch-package 到開發依賴
  2. 直接修改 node_modules 中的依賴包代碼
  3. 生成補丁文件
  4. 提交補丁文件到版本控制系統

postinstall

postinstall 是 npm/yarn 的生命周期鉤子腳本之一:

  • 自動執行:在執行 npm installyarn install 后自動運行
  • 定義位置:在 package.jsonscripts 字段中定義
  • 常見用途
    • 應用補丁(如使用 patch-package)
    • 構建原生模塊
    • 初始化項目配置
    • 執行必要的設置腳本

三、操作步驟

1、使用yarn安裝patch-package和postinstall-postinstall

命令行:

yarn add patch-package postinstall-postinstall

報錯解決:
在這里插入圖片描述

對于工程需要明確:將依賴項添加到根還是添加到特定的工作區包:

若:將依賴項添加到根 workspace,執行:

yarn add <package-name> -W
# 或者
yarn add <package-name> --ignore-workspace-root-check

若:將依賴項添加到特定的工作區包,執行:

yarn workspace <workspace-name> add <package-name>

所以以上代碼替換為:

yarn add patch-package postinstall-postinstall -W

在這里插入圖片描述

2、修改package.json

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

postinstall 是 npm 或 yarn 安裝依賴后自動執行的腳本,通常用于執行后續配置或修補操作。這里將其指向patch-package

3、修改node-model中源碼、保存。

4、找到修改文件對應的包名

執行以下代碼:

yarn patch-package 你的包名# 以protomaps為例
yarn patch-package protomaps

在這里插入圖片描述

然后會在根目錄下出現:

在這里插入圖片描述

5、使用git將新增的patches文件同步到倉庫

(新安裝包后,yarn.lock也會修改,因此同步提交)

在這里插入圖片描述

6、新環境拉下倉庫,驗證修改是否成功。

在這里插入圖片描述

執行yarn install的時候會自動執行patch-package,自動替換源碼補丁。修改成功

四、通過git維護自定義依賴庫

若需要二開大量修改源碼的時候,還可以單獨維護一個自定義依賴庫。這樣拉取代碼的時候可以自動獲取你修改后的依賴版本。

修改方式

在package.json中,找到devDependencies下對應的包名,將原先的版本號,替換為git+倉庫路徑:

例如,以terriajs包為例:

"devDependencies": {
"terriajs": "git+http://github.com/yourGitRepository/terriajs.git",
}

然后再次在終端輸入以下命令,安裝依賴并啟動項目,偶爾會碰到github被墻的問題(也可以使用gitea/gitlab)

yarn install 
yarn gulp
yarn start

這樣拉下來的就是更新后的版本了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92734.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92734.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92734.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

當配置項只支持傳入數字,即無法指定單位為rem,需要rem轉px

您好&#xff01;針對您 Vue 3 Element Plus 的技術棧&#xff0c;要優雅且符合大廠規范地解決這個問題&#xff0c;最佳實踐是創建一個響應式的 Composition API (組合式函數)。 這個方法完全遵循 Vue 3 的設計哲學&#xff0c;具有高內聚、低耦合、可復用、類型安全&#xf…

谷歌搜索 sg_ss 逆向分析

聲明: 本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包內容、敏感網址、數據接口等均已做脫敏處理&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無關&#xff01;部分python代碼sg_ss cp.call(get_sg_…

一個“加鎖無效“的詭異現象

加鎖了還出問題&#xff1f;從"點擊過快"到"狀態可控"&#xff1a;多線程共享變量的并發陷阱與實戰對策詳情如下&#xff1a;在服務端開發中&#xff0c;多線程并發處理客戶端請求是提升系統吞吐量的常見手段。最近有位開發者朋友遇到了一個令人費解的問題…

液體泄漏識別誤報率↓76%:陌訊多模態融合算法實戰解析

原創聲明本文為原創技術解析&#xff0c;核心技術參數與架構設計引用自《陌訊技術白皮書》&#xff0c;禁止未經授權的轉載與篡改。一、行業痛點&#xff1a;液體泄漏識別的現實挑戰在化工生產、食品加工、倉儲物流等場景中&#xff0c;液體泄漏的實時監測是保障安全生產的關鍵…

Y9000P跑開源模型(未完成)

環境信息 1、Y9000筆記本 2、1T空白硬盤 3、ubunut24.04桌面版 一、環境初始化 第一部分&#xff1a;系統初始化 1、安裝基礎軟件 apt-get update apt-get -y install openssh-server openssh-client apt-utils freeipmi ipmitool sshpass ethtool zip unzip nano less git ne…

ARM體系結構

ARM體系結構 編程原理 從源代碼到CPU執行過程 #mermaid-svg-M4xemCxDjIQVNNnW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:14px;fill:#333;}#mermaid-svg-M4xemCxDjIQVNNnW .error-icon{fill:hsl(220.5882352941, 100%, 98.3333333333%);}#mer…

基于SpringBoot的高校社團管理系統的設計與實現(代碼+LW文檔+遠程運行)

&#x1f4af;博主&#xff1a;?全網擁有50W粉絲、博客專家、全棧領域優質創作者、平臺優質Java創作者、專注于Java技術領域和畢業項目實戰?&#x1f4af; &#x1f497;開發技術&#xff1a;SpringBoot、Vue、SSM、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、…

F5發布業界首創集成式應用交付與安全平臺,開啟ADC 3.0新時代

在數字化轉型加速與AI技術蓬勃發展的今天&#xff0c;企業對應用性能與安全的需求正經歷革命性變革。傳統應用架構已難以滿足現代混合多云環境與AI驅動型業務場景的嚴苛要求。全球領先的應用安全和交付服務提供商F5&#xff08;NASDAQ: FFIV&#xff09;&#xff0c;持續推動 F…

SELinux 入門指南

SELinux(Security-Enhanced Linux)是 Linux 內核的一個安全模塊&#xff0c;它提供了一種強制訪問控制&#xff08;Mandatory Access Control, MAC&#xff09;機制。與傳統的 Linux 自主訪問控制&#xff08;Discretionary Access Control, DAC&#xff09;不同&#xff0c;SE…

ARMv8 MMU頁表格式及地址轉換過程分析

1.簡介 CPU發出的虛擬地址經過MMU轉換后得到物理地址&#xff0c;然后使用物理地址訪問真實的硬件。虛擬地址和物理地址的映射關系保存在頁表中&#xff0c;MMU需要遍歷頁表&#xff0c;才能將虛擬地址轉換成物理地址。ARM64現在有兩種大小的頁表描述符&#xff0c;分別是ARMv8…

數據結構---二叉樹(概念、特點、分類、特性、讀取順序、例題)、gdb調試指令、時間復雜度(概念、大O符號法、分類)

一、二叉樹1、樹1&#xff09;概念 樹是 n(n > 0) 個結點的有限集合。若 n0 &#xff0c;為空樹。在任意一個非空樹中&#xff1a;&#xff08;1&#xff09;有且僅有一個特定的根結點&#xff1b;&#xff08;2&#xff09;當 n>1 時&#xff0c;其余結點可分為 …

安全基礎DAY1-安全概述

信息安全現狀及挑戰常見術語信息安全的脆弱性及常見攻擊網絡環境的開放性其實就是人人可以上網&#xff0c;網上零成本。協議棧自身的脆弱性及常見攻擊協議棧自身的脆弱性常見安全風險網絡的基本攻擊模式物理層--物理攻擊前置知識 1.打開Apache服務 cd /etc/init.d ./apache2 s…

Claude Code 的核心能力與架構解析

技術分析介紹&#xff1a;Claude Code 的核心能力與架構解析一、概述 Claude Code 是由 Anthropic 推出的面向開發者的智能編碼助手&#xff0c;它不僅僅是一個代碼生成工具&#xff0c;更是一個具備記憶、工具調用、自主規劃和環境感知能力的“智能代理”&#xff08;Agentic …

Mac 電腦放在環境變量中的通用腳本

mac電腦下放在環境變量中&#xff0c;方便提高效率執行 注&#xff1a;相關路徑需要根據實際情況進行更新 需要在 .bash_profile 文件中定義如下&#xff08;路徑需要做實際替換&#xff09;&#xff1a; source $HOME/software/scripts/base_profile.sh source $HOME/software…

UE藍圖節點Add Impulse和Add Torque in Radians

???????Add Impulse&#xff1a;對剛體施加一次性的線性脈沖&#xff08;瞬時改變量&#xff09;&#xff0c;改變速度&#xff08;與質量有關&#xff0c;除非你勾 bVelChange&#xff09;。Add Torque (in Radians)&#xff1a;對剛體施加轉矩/旋轉力&#xff08;向量…

大型語言模型幻覺檢測與緩解技術研究綜述

摘要 本文系統綜述了大型語言模型(LLMs)中的幻覺現象及其檢測與緩解技術。研究首先從認知機制角度分析了幻覺產生的理論根源&#xff0c;包括模型對語言先驗的過度依賴、訓練數據偏差以及推理過程中的信息衰減等問題。在技術層面&#xff0c;綜述將現有方法歸納為三類&#xff…

【數據結構初階】--二叉樹(二)

&#x1f618;個人主頁&#xff1a;Cx330? &#x1f440;個人簡介&#xff1a;一個正在努力奮斗逆天改命的二本覺悟生 &#x1f4d6;個人專欄&#xff1a;《C語言》《LeetCode刷題集》《數據結構-初階》 前言&#xff1a;上篇博客我們學習了有關樹的概念和相關術語的介紹&…

jmm 指令重排 緩存可見性 Volatile 內存屏障

CPU指令重排 CPU指令重排是指CPU為了提高指令執行效率&#xff0c;可能會對指令的執行順序進行優化&#xff0c;使得&#xff08;單線程下&#xff09;指令的實際執行順序與代碼中的順序不同&#xff0c;但結果是一致的。 這種優化是通過亂序執行和緩存讀寫重排來實現的。 亂序…

卡車手機遠程啟動一鍵啟動無鑰匙進入有哪些好處

隨著汽車科技的發展&#xff0c;卡車智能化升級已成為趨勢&#xff0c;其中手機控車、遠程啟動、無鑰匙進入及一鍵啟動等功能顯著提升了駕駛便捷性與安全性。以下從功能特點、技術原理、適用場景及改裝建議等方面展開說明。一、核心功能及技術特點1. 無鑰匙進入系統自動感應操作…

【pyqt5】SP_(Standard Pixmap)的標準圖標常量及其對應的圖標

目錄 **常見SP_圖標分類及用途** **1. 箭頭和導航圖標** **2. 文件和編輯操作** **3. 系統狀態和通知** **4. 應用程序和菜單** **5. 數據視圖控件** **完整列表(部分)** **使用建議** **6. 數據操作圖標** **7. 編輯和文本操作** **8. 媒體控制圖標** **9. 系統和應用狀態**…