成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Yarn Link 是如何幫助開發(fā)者對(duì) NPM 包進(jìn)行 Debug 的?

開發(fā) 前端
我對(duì)其底層原理產(chǎn)生了興趣,所以寫了這么一篇文章,希望能夠通過故事的形式,來讓大家理解 yarn link 的使用場(chǎng)景和用法。

大家好,我是前端西瓜哥。最近在研究 React 源碼,用到了 yarn link 命令來鏈接兩個(gè)項(xiàng)目。

我對(duì)其底層原理產(chǎn)生了興趣,所以寫了這么一篇文章,希望能夠通過故事的形式,來讓大家理解 yarn link 的使用場(chǎng)景和用法。

另外 npm link 和 yarn link 的效果是相同的,下文就不提及 npm link 了。

有一天,小瓜維護(hù)的一個(gè)名為 xigua 的 NPM 包,被人提了 issue。小瓜看了下問題描述,憑著對(duì)項(xiàng)目的熟悉,他大概知道是哪里出了問題。

為了測(cè)試,小瓜搭建了一個(gè) demo-project 項(xiàng)目,且這個(gè)項(xiàng)目通過 yarn add xiga 安裝了這個(gè)包,并在代碼中使用了它。

└── demo-project
└── node_modules
├── apple
└── xigua
├── old.js
└── package.json

理論上,小瓜去這個(gè) demo-project 項(xiàng)目的 node_module/xigua 目錄下直接修改代碼就好了。

但不幸的是,里面的代碼是編譯出來的,無法直接修改。

小瓜于是跑到了 xigua-project 包的源碼項(xiàng)目中,運(yùn)行了一個(gè)可以監(jiān)聽源碼修改生成 npm 包內(nèi)容的命令。小瓜修改了一處代碼,然后自動(dòng)編譯到了 xigua-project/build/ 中。

└── xigua-project
└── build
└── xigua(編譯出來的文件夾)
├── fix.js
└── package.json

然后小瓜就復(fù)制編譯好的代碼,覆蓋掉原來的demo-project/node_module/xigua ,然后看看效果不對(duì)。小瓜發(fā)現(xiàn)不對(duì),再改,然后再復(fù)制,一連重復(fù)了好幾次。

“我受不了了,得想個(gè)辦法。”小瓜說。每次編譯完都要手動(dòng)進(jìn)行復(fù)制操作,太搞人心態(tài)了。

機(jī)智的小瓜一番思考,最終想到了一個(gè)辦法。

  1. 將 demo-project 下的 xigua 依賴包刪除
  2. 然后創(chuàng)建一個(gè) xigua 軟鏈接文件,鏈接到 xigua-project 下的編譯文件夾(軟鏈接可以理解為快捷方式文件,可以將文件位置重定向)。
├── demo-project
└── node_modules
├── apple
└── xigua(重定向) -> /xigua/build/node_modules/xigua
└── xigua-project
└── build
└── xigua(被鏈接的位置)
├── fix.js
└── package.json

利用軟鏈接,我們將兩個(gè)項(xiàng)目關(guān)聯(lián)了起來。

yarn link

此時(shí),舍友小潤抱著他的猹路過了,猹是他的貓的名字。

小瓜正對(duì)自己的奇思妙想沾沾自喜,立馬向小潤吹噓起來。

小潤:“這個(gè)需求,包管理器是有相關(guān)命令支持的。”

小瓜:“居然有!展開說說怎么用。”

小潤于是講解了起來。

其實(shí)很簡單,我們進(jìn)入到 xigua/build/xigua 目錄下,執(zhí)行 yarn link。

$ yarn link
yarn link v1.22.17
success Registered "xigua".
info You can now run `yarn link "xigua"` in the projects where you want to use this package and it will be used instead.
? Done in 0.01s.

這樣,包管理工具就會(huì) 在全局注冊(cè)一個(gè)名為 xiuga 的鏈接。

具體就是創(chuàng)建一個(gè) xigua 軟鏈接文件,指向這個(gè) xigua 目錄。在 macOS 中,是在 ~/.config/yarn/link/xigua 目錄下。

鏈接指向如下:

~/.config/yarn/link/xigua  ->  /xigua-project/build/xigua

更準(zhǔn)確來說,yarn link 是會(huì)從當(dāng)前工作目錄往上找第一個(gè)有正確 package.json 文件的目錄,作為鏈接的對(duì)象,因?yàn)?npm 包里必須要有 package.json。

接下來我們?cè)倥艿?demo-project 項(xiàng)目的目錄下,執(zhí)行 yarn link xigua

$ yarn link xigua
yarn link v1.22.17
success Using linked package for "xigua".
? Done in 0.01s.

它會(huì)做兩個(gè)操作:

  1. 將 demo-project 下的 xigua 依賴包刪除。
  2. 然后創(chuàng)建一個(gè) xigua 軟鏈接文件,鏈接到 yarn/link/xigua。形成 demo-project -> yarn/link -> xigua-project的鏈。

小瓜震驚了:“這操作不就和我的做法一樣嗎?不過多了一個(gè) 中間人 yarn”。

是的,但 yarn 更方便。

yarn unlink

你在 demo-project 測(cè)試完了,想要斷開鏈接,此時(shí)需要執(zhí)行:

$ yarn unlink xigua
yarn unlink v1.22.17
success Removed linked package "xigua".
info You will need to run `yarn install --force` to re-install the package that was linked.
? Done in 0.01s.

斷開鏈接后,因?yàn)樵瓉淼陌鼊h掉并換了個(gè)鏈接文件,所以我們需要再把這個(gè)包裝回來,需要執(zhí)行 yarn install --force

你說我刪除 node_modules,然后再執(zhí)行 yarn 行不行。

可以,前提是你的 node_modules 沒有其他包的鏈接,否則的話會(huì)把其他包的鏈接也干掉。

如果要?jiǎng)h除全局的注冊(cè)的名為 xigua 的 link,需要進(jìn)入到被鏈接的目錄下,執(zhí)行 yarn unlink。

$ yarn unlink
yarn unlink v1.22.17
success Unregistered "xigua".
info You can now run `yarn unlink "xigua"` in the projects where you no longer want to use this package.
? Done in 0.01s.

結(jié)尾

yarn link 的作用是幫助我們調(diào)試開發(fā)的 NPM 包。

因?yàn)槠胀?xiàng)目的依賴包安裝是從網(wǎng)絡(luò)下載安裝的,如果要使用本地編譯的 NPM 包,比較好的方式是刪掉依賴包,通過快捷方式來鏈接我們本地編譯包。

為了簡化這一流程,yarn link 出現(xiàn)了,通過中間者的形式,來實(shí)現(xiàn)快速地 link 和 unlink。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2025-01-06 13:03:11

2015-07-22 16:08:46

OpenStack開源貢獻(xiàn)代碼

2012-08-22 09:39:28

開發(fā)者

2022-04-26 05:55:13

容器K8s管理debug問題

2014-04-17 10:42:50

DevOps

2021-01-05 11:07:08

U-Link智能超鏈

2013-10-24 09:46:01

Firefox開發(fā)者

2012-09-19 10:25:56

iPhone 5游戲開發(fā)者

2012-06-13 01:23:30

開發(fā)者程序員

2024-07-22 08:00:00

2013-09-29 10:04:09

Arrownock開發(fā)者社交

2011-06-22 10:35:02

FirefoxWeb

2012-06-20 10:58:15

Surface平板微軟開發(fā)者

2023-08-24 07:31:16

2022-08-03 00:04:29

pnpmyarnnpm

2010-05-07 12:27:11

Oracle data

2012-07-31 09:01:05

2022-08-15 11:29:44

騰訊云云端開發(fā)工具Web IDE

2011-09-26 09:10:41

Web
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: av网站免费观看 | 欧美综合久久久 | 一级日批片 | 亚洲激情专区 | 成人a在线观看 | 久久大香 | 欧美成视频 | 337p日本欧洲亚洲大胆精蜜臀 | 中文字幕久久精品 | 黑人巨大精品欧美一区二区免费 | 亚洲 成人 av| 精品久久香蕉国产线看观看亚洲 | 色综合视频 | 三级av在线| 美女福利视频网站 | 欧美成人h版在线观看 | 久久夜色精品国产 | 国产一级免费在线观看 | 国产日韩欧美在线 | 欧美乱大交xxxxx另类电影 | 日本三级线观看 视频 | 成人一区av| 成人精品鲁一区一区二区 | 一区二区三区不卡视频 | 亚洲欧美精品久久 | 99热99 | 81精品国产乱码久久久久久 | 亚洲在线 | 精品国产欧美一区二区三区不卡 | 中文字幕av免费 | 欧美精品99 | 久热久| 成人国产精品免费观看 | 色综合中文 | 日韩一及片 | 午夜午夜精品一区二区三区文 | 三级视频在线观看 | 免费一级毛片 | 黑人巨大精品欧美黑白配亚洲 | 国产毛片毛片 | 欧美 日韩 国产 成人 在线 91 |