日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

源碼補(bǔ)丁神器—patch-package

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-07-30 10:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、背景

vue項(xiàng)目中使用 vue-pdf 第三方插件預(yù)覽pdf,書寫業(yè)務(wù)代碼完美運(yùn)行,pdf文件內(nèi)容正常預(yù)覽無問題。后期需求有變,業(yè)務(wù)需求增加電子簽章功能。這個(gè)時(shí)候pdf文件的內(nèi)容可以顯示出來,但是公司的電子簽章無法顯示。這令人沮喪,因?yàn)橐呀?jīng)編寫了許多特定于此依賴項(xiàng)的代碼,如果替換依賴庫,這些代碼很可能會(huì)被浪費(fèi)。更重要的是其已經(jīng)在生產(chǎn)環(huán)境運(yùn)行。

在不更改依賴庫進(jìn)行大改動(dòng)的前提下,先查找問題所在。經(jīng)查發(fā)現(xiàn)此為官方bug 無法顯示簽章。進(jìn)一步查詢發(fā)現(xiàn)根源是其依賴包 pdf.js 的 電子簽章不顯示。

問題已定位到,要修改顯示電子簽章的代碼是在node_modules的依賴包中。

如何解決此問題?

二、常用方法

1. 給依賴包提 issue 等待他人修復(fù)并發(fā)布

2. 給依賴包提 pr 自行修復(fù)并等待發(fā)布

3. 整體copy項(xiàng)目法

直接引用法

直接copy依賴包的源碼,本地引用,不再通過npm包方式引用

發(fā)布私庫法

適合多項(xiàng)目中使用同一個(gè)依賴包的場景,可以把修改后的源碼發(fā)布到私有的倉庫上

4. 修改引用法

配置一個(gè)webpack alias別名,如'原始文件的引用路徑': '修改后文件的引用路徑',使得最終修改后的文件被引用,如:

resolve: {  
    alias: {  
        'pdfjs': path.resolve(__dirname, './patched/pdfjs/*'), 
    }
}

以上方法均有弊端:

前兩種修復(fù)周期很長且依賴第三方,修復(fù)時(shí)間不定,不適合解決當(dāng)前問題。

后幾種方法都比較復(fù)雜,并且會(huì)導(dǎo)致項(xiàng)目臃腫,更容易忘記自己修改了源碼的哪個(gè)部分,而且更新麻煩,每次都需要手動(dòng)去更新代碼,無法與插件同步更新。

有沒有一種方法,可以優(yōu)雅修改node_modules的源碼?

三、patch-package

?patch-package 讓程序開發(fā)者立即修復(fù)并保留 npm 依賴項(xiàng)。是一個(gè)給依賴項(xiàng)打補(bǔ)丁的完美方案。

# fix a bug in one of your dependencies
vim node_modules/some-package/brokenFile.js

# run patch-package to create a .patch file
npx patch-package some-package

# commit the patch file to share the fix with your team
git add patches/some-package+3.14.15.patch
git commit -m "fix brokenFile.js in some-package"

使用方法:

1.安裝

npm i patch-package

如果你不需要在生產(chǎn)中運(yùn)行

npm i patch-package --save-dev

yarn、pnpm、docker安裝命令可查看其 git官網(wǎng)。?

2. 修改npm包

更改node_modules 文件夾中要修改依賴包的文件

3. 生成補(bǔ)丁

npx patch-package package-name

4. 添加自動(dòng)執(zhí)行命令

In package.json

 "scripts": {
    +  "postinstall": "patch-package"
 }

在本文示例中,在node_modules找到要修改的依賴包pdfjs-dist,修改代碼如下:

wKgaomandYWAK35GAAJIUePYles986.jpg

??

執(zhí)行npx patch-package pdfjs-dist,生成補(bǔ)丁,會(huì)在文件目錄中生成一個(gè)patches文件夾,如下:

wKgZomandYaAKxFOAAIRwSjkvNM629.jpg

??

至此項(xiàng)目中的bug已修復(fù),如何讓更改內(nèi)容在團(tuán)隊(duì)其他同事拉取代碼后執(zhí)行?

添加自執(zhí)行命令如下,會(huì)在 npm install 后知執(zhí)行。

wKgaomandYeAS_qtAAMMGc6ABoY933.jpg

??

patch文件是什么?

其實(shí)就是一些git diff記錄描述。

原理: patch-package會(huì)將當(dāng)前 node_modules下的源碼與原始源碼進(jìn)行 git diff,并在項(xiàng)目根目錄下生成一個(gè)patch補(bǔ)丁文件。

如何自測補(bǔ)丁是否生效?

手動(dòng)刪除項(xiàng)目中的node_modules,并重新執(zhí)行npm install命令安裝依賴包。安裝成功后查看之前修改的 node_modules 依賴包中的文件,查看修改的代碼是否依然存在,如果之前修改代碼依然存在即表明補(bǔ)丁文件已經(jīng)生效,如果你之前修改的代碼不存在即表明補(bǔ)丁文件沒有生效。

四、patch-package 好處

版本預(yù)檢

當(dāng)依賴項(xiàng)發(fā)生更改時(shí),會(huì)以紅色大寫字母通知,需要檢查所做修復(fù)是否仍然有效。npx patch-package 會(huì)直接報(bào)錯(cuò)**ERROR** Failed to apply patch for package xxxx at path,通過提示可以更方便定位問題。

節(jié)省空間

無需拷貝一份源碼,使用git diff來記錄補(bǔ)丁更節(jié)省空間,安全又便捷。

可審查

補(bǔ)丁可以作為正常審查過程的一部分進(jìn)行審查。

五、注意事項(xiàng)

?直接修改 node_modules 下的代碼不是被推薦的做法,應(yīng)該僅在應(yīng)急情況下考慮

?長期還是需要徹底修復(fù)第三方包缺陷并逐步移除項(xiàng)目中的 .patch 文件

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    689

    瀏覽量

    31531
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    普華基礎(chǔ)軟件開源小滿V25.04-patch和V25.10-patch版本發(fā)布

    近日,開源小滿EasyXMen社區(qū)正式發(fā)布開源小滿V25.04-patch和V25.10-patch兩個(gè)重要版本,持續(xù)提升基礎(chǔ)軟件平臺(tái)在車載ECU量產(chǎn)場景中的穩(wěn)定性與可靠性,為整車電子電氣架構(gòu)構(gòu)筑
    的頭像 發(fā)表于 05-11 15:38 ?65次閱讀

    NI package manage搜索顯示無網(wǎng)絡(luò)情況問題

    在NI package manage中搜索驅(qū)動(dòng),顯示如下報(bào)錯(cuò),請(qǐng)問是什么原因,應(yīng)該怎么解決。
    發(fā)表于 04-12 14:48

    WebRTC源碼級(jí)深度解析(完結(jié)) (讠果xingkeit-top)#WebRTC #源碼

    源碼
    jf_82580774
    發(fā)布于 :2026年03月30日 15:22:21

    Windows 和 Mac 設(shè)備混著管,一個(gè)控制臺(tái),補(bǔ)丁管理輕松拿捏

    曾經(jīng)企業(yè)辦公系統(tǒng)高度統(tǒng)一,清一色全是Windows電腦,或者全員都用Mac,一套工具就能搞定全公司補(bǔ)丁。但如今,混合辦公、BYOD普及,絕大多數(shù)公司都變成了Windows+Mac雙系統(tǒng)混用的環(huán)境
    的頭像 發(fā)表于 03-26 16:59 ?1170次閱讀
    Windows 和 Mac 設(shè)備混著管,一個(gè)控制臺(tái),<b class='flag-5'>補(bǔ)丁</b>管理輕松拿捏

    IT 補(bǔ)丁管理的8大深坑,一招全破解

    很多IT團(tuán)隊(duì)一到每月的“補(bǔ)丁星期二”就頭疼,設(shè)備多、遠(yuǎn)程管不過來、補(bǔ)丁總漏打、怕更崩系統(tǒng)、審計(jì)要的材料拿不出來。對(duì)企業(yè)來說,補(bǔ)丁管理絕不僅僅是看到更新提示點(diǎn)一下“立即更新”那么簡單,而是一套關(guān)乎終端
    的頭像 發(fā)表于 03-19 17:05 ?891次閱讀
    IT <b class='flag-5'>補(bǔ)丁</b>管理的8大深坑,一招全破解

    深度解析?| DMA-BUF適配Android與RK特性核心Patch:高性能內(nèi)存管理升級(jí)方案

    在嵌入式Linux與Android設(shè)備中,DMA-BUF作為跨進(jìn)程、跨設(shè)備的內(nèi)存共享核心機(jī)制,直接決定了圖形渲染、視頻編解碼、相機(jī)采集等關(guān)鍵場景的性能表現(xiàn)。一款針對(duì)dma-buf的核心補(bǔ)丁add
    的頭像 發(fā)表于 03-16 08:16 ?3141次閱讀
    深度解析?| DMA-BUF適配Android與RK特性核心<b class='flag-5'>Patch</b>:高性能內(nèi)存管理升級(jí)方案

    Rockchip CIF驅(qū)動(dòng)深度解析:從架構(gòu)設(shè)計(jì)到電源計(jì)數(shù)補(bǔ)丁修復(fù)

    穩(wěn)定性。本文將從「驅(qū)動(dòng)整體架構(gòu)」入手,拆解核心文件功能與調(diào)用關(guān)系,再聚焦「Sensor 電源引用計(jì)數(shù)補(bǔ)丁」,詳解如何通過補(bǔ)丁解決實(shí)際運(yùn)行中的穩(wěn)定性問題,為驅(qū)動(dòng)開發(fā)與調(diào)試提供完整參考。
    的頭像 發(fā)表于 02-06 16:49 ?5114次閱讀
    Rockchip CIF驅(qū)動(dòng)深度解析:從架構(gòu)設(shè)計(jì)到電源計(jì)數(shù)<b class='flag-5'>補(bǔ)丁</b>修復(fù)

    RK3588 MIPI轉(zhuǎn)LVDS屏幕調(diào)試全流程(附完整Patch

    轉(zhuǎn)換 IC(如 TC358775XBG)時(shí),軟硬件協(xié)同排查更需精準(zhǔn)。本文結(jié)合實(shí)際項(xiàng)目案例,梳理從問題定位到功能驗(yàn)證的標(biāo)準(zhǔn)化步驟,并附上完整調(diào)試 Patch,幫你快速突破瓶頸。
    的頭像 發(fā)表于 02-05 13:52 ?1241次閱讀
    RK3588 MIPI轉(zhuǎn)LVDS屏幕調(diào)試全流程(附完整<b class='flag-5'>Patch</b>)

    別讓小疏忽釀成大風(fēng)險(xiǎn),這些補(bǔ)丁誤區(qū)你避開了嗎?

    補(bǔ)丁管理始終是維護(hù)系統(tǒng)安全與穩(wěn)定的核心環(huán)節(jié),它能確保操作系統(tǒng)、應(yīng)用程序及終端設(shè)備時(shí)刻保持最新狀態(tài),獲取最新的安全防護(hù)與功能支持。這一關(guān)鍵環(huán)節(jié)中的細(xì)微疏漏,往往成為引爆安全危機(jī)的導(dǎo)火索,可能讓企業(yè)直面
    的頭像 發(fā)表于 11-12 17:02 ?1398次閱讀
    別讓小疏忽釀成大風(fēng)險(xiǎn),這些<b class='flag-5'>補(bǔ)丁</b>誤區(qū)你避開了嗎?

    【米爾RK3506國產(chǎn)開發(fā)板評(píng)測】3、實(shí)時(shí)補(bǔ)丁以及EtherCAT IGH移植

    的指令格式如下 patch -p1 < path/to/patch-x.y.z Rockchip SDK中的doc/Real-Time-Performance目錄下有相關(guān)的實(shí)時(shí)內(nèi)核補(bǔ)丁
    發(fā)表于 10-27 10:09

    【米爾NXP i.MX 91開發(fā)板評(píng)測】移植和運(yùn)行RT-Linux,實(shí)時(shí)性能測試

    : $p\" patch -p1 < patches/$p done echo \"RT補(bǔ)丁應(yīng)用完成\" 配置和編譯實(shí)時(shí)內(nèi)核 echo \"配置
    發(fā)表于 09-01 10:11

    智能小車設(shè)計(jì)源碼和圖紙資料

    智能小車設(shè)計(jì)源碼和圖紙
    發(fā)表于 08-25 15:38 ?1次下載

    迅為RK3568開發(fā)板OpeHarmony學(xué)習(xí)開發(fā)手冊(cè)1.1-內(nèi)核移植優(yōu)化

    ;copy 到 out 目錄-->打新補(bǔ)丁 那么優(yōu)化思路是什么呢? out/kernel/src_tmp/linux-5.10/ linux-5.10/ 下的內(nèi)核源碼是已經(jīng)打過原始內(nèi)核補(bǔ)丁
    發(fā)表于 07-26 10:37

    【HZ-RK3568開發(fā)板免費(fèi)體驗(yàn)】3、開啟Linux Kernel RT功能

    微提供配套SDK的Preempt-RT補(bǔ)丁。 1、Linux PREEMPT_RT補(bǔ)丁 Linux Kernel應(yīng)用補(bǔ)丁的指令格式如下 patch -p1 < path
    發(fā)表于 07-22 14:03

    (ST大賽三等獎(jiǎng)作品)超聲波自拍神器實(shí)例項(xiàng)目

    (ST大賽三等獎(jiǎng)作品)超聲波自拍神器電路圖:
    發(fā)表于 05-28 21:04
    康马县| 尚义县| 朔州市| 佛山市| 紫金县| 海口市| 东山县| 甘泉县| 烟台市| 沙雅县| 高青县| 龙口市| 尼木县| 临朐县| 伊春市| 安顺市| 剑河县| 民县| 宁国市| 宁安市| 宁海县| 北票市| 贵溪市| 吉安市| 凤凰县| 普兰店市| 蒲江县| 兴仁县| 定西市| 化德县| 博兴县| 拜城县| 福海县| 札达县| 麻江县| 张掖市| 修文县| 西城区| 宁陵县| 临沂市| 城步|