強制孫依賴的版本
今天博主遇到一個棘手的問題,@vue/cli-service 依賴了一個包 portfiner@^1.0.20,但是 2 天前,這個包更新到了1.0.22,帶來了一些問題。
博主第一反應就是想 yarn add portfinder@1.0.21,看看yarn可不可以復用這個版本。
但是結果卻是 1.0.21 和 1.0.22 都裝上了,而且 @vue/cli-service 還是依舊用的是 1.0.22 這個問題版本。
一怒之下,博主到yarn的文檔隨便翻了翻,結果還真有一個東西: “resolutions”:
在 package.json 定義 resolutions:
{ "name": "project", "version": "1.0.0", "dependencies": { "left-pad": "1.0.0", "c": "file:../c-1", "d2": "file:../d2-1" }, "resolutions": { "d2/left-pad": "1.1.1" } }
這樣的結果是,這個項目下,所有的 d2/left-pad@1.1.1 范圍內符合的,都指向這一版。
monorepo的多重依賴 --- workspace
{ "private": true, "name": "project", "version": "1.0.0", "workspaces": [ "apps/*", "packages/*" ] }
上面這里private true,會組織npm發包
我們安裝依賴,只需要在項目根目錄yarn一下就可以裝項目里面所有依賴(包括子項目的依賴)
啟動子項目:yarn workspace <name> <script>
推薦閱讀:https://zhuanlan.zhihu.com/p/71385053