使用場景
1.在組件和插件依賴開發中,項目作為依賴庫沒辦法單獨直接運行,需要依賴進別的項目執行,這時候最常用的方式就是npm link
。但用npm link
引入的依賴由於資源文件不在項目下,webpack
不會對其做預編譯,導致實際構建或者運行時會報錯,此時如果直接將文件復制進依賴目錄則能正常運行,yalc能解決此類問題。
2.在一個項目中,我們會用 HRM 熱更新來讓我們修改的代碼在瀏覽器中快速看到效果,快速驗證我們的代碼是否正確。
當項目開始變大,為了提效、跨項目復用,我們會不可避免的需要開始去拆分一些通用的 NPM 模塊
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 生命周期
腳本:prepublish
、prepare
、prepublishOnly
、prepack
、preyalcpublish
,會按此順序逐一執行。如果存在:postyalcpublish
、postpack
、publish
、postpublish
,也會按此順序逐一執行。
想要完全禁用腳本執行需要使用
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]