1. 程式人生 > 其它 >比npm link 更好用的yalc

比npm link 更好用的yalc

在元件依賴開發中,專案作為依賴庫沒辦法單獨直接執行,需要依賴進別的專案執行,這時候最常用的方式就是npm link。但用npm link引入的依賴由於資原始檔不在專案下,webpack不會對其做預編譯,導致實際構建或者執行時會報錯,此時如果直接將檔案複製進依賴目錄則能正常執行。對於這樣的情況,意外的碰到了一個很適合的解決方案——yalc

Yalc

yalc可以在本地將npm包模擬釋出,將釋出後的資源存放在一個全域性儲存中。然後可以通過yalc將包新增進需要引用的專案中。

這時候package.json的依賴表中會多出一個file:.yalc/...的依賴包,這就是yalc建立的特殊引用。同時也會在專案根目錄建立一個yalc.lock

確保引用資源的一致性。因此,測試完專案還需要執行刪除yalc包的操作,才能正常使用。

整個過程相對於npm link會更加繁瑣一些,要經過發包、新增依賴,結束後也需要做清除操作,但也正因此才避免了npm link的一些問題。

安裝

NPM:
npm i yalc -g

Yarn:
yarn global add yalc

  

釋出依賴

在所開發的依賴專案下執行釋出操作

yalc publish

  

此時如果存在npm 生命週期指令碼:prepublishprepareprepublishOnlyprepackpreyalcpublish,會按此順序逐一執行。如果存在:postyalcpublish

postpackpublishpostpublish,也會按此順序逐一執行。

想要完全禁用指令碼執行需要使用

yalc publish --no-scripts

  

此時就已經將依賴釋出到本地倉庫了。

當有新修改的包需要釋出時,使用推送命令可以快速的更新所有依賴

yalc publish --push
yalc push // 簡寫

  

引數:

  • --changed,快速檢查檔案是否被更改
  • --replace,強制替換包

新增依賴

進入到專案執行

yalc add [my-package]

  

可以看到專案中添加了yalc.lock檔案,package.json對應的包名會有個地址為file:.yalc/

開頭的專案。
也可以使用

yalc add [my-package@version]

  

將版本鎖定,避免因為本地新包推送產生影響。

引數:

  • --dev,將依賴新增進dependency
  • --pure,不會影響package.json檔案
  • --link,使用link方式引用依賴包,yalc add [my-package] --link
  • --workspace (or -W),新增依賴到workspace:協議中

更新依賴

yalc update
yalc update [my-package]

  

會根據yalc.lock查詢更新所有依賴

移除依賴

yalc remove [my-package]

yalc remove --all // 移除所有依賴並還原

  

檢視倉庫資訊

當我們要檢視本地倉庫裡存在的包時

yalc installations show

  

要清理不需要的包時

yalc installations clean [my-package]