前端多個包管理的的方式一般都是採用monorepo
的方式去管理,之前都是使用的lerna
的workspace去管理。這段時間包管理切換到了pnpm
上,它也有worksapce,可以支援monorepo
。
有的小夥伴可能對monorepo不太瞭解,我們簡單說下:
Monorepo的意思是在版本控制系統的單個程式碼庫裡包含了許多專案的程式碼。這些專案雖然有可能是相關的,但通常在邏輯上是獨立的,並由不同的團隊維護。
在前端使用角度來看,monorepo
就是把多個工程放到一個 git
倉庫中進行管理,因此他們可以共用同一套構建流程、程式碼規範也可以做到統一,特別是如果存在模組間的相互參照的情況,檢視程式碼、修改bug、偵錯等會更加方便。
pnpm在這裡我們就不過多介紹,有不瞭解的小夥伴,可以看下官網pnpm.
pnpm init
,會在根目錄生成一個packaeg.json
檔案。2.建立 pnpm-workspace.yaml
和.npmrc
檔案
pnpm-workspace.yaml
.npmrc
pnpm 從命令列、環境變數和 .npmrc
檔案中獲取其設定。
pnpm config
命令可用於更新和編輯 使用者和全域性 .npmrc
檔案的內容。
四個相關檔案分別為:
/path/to/my/project/.npmrc
)pnpm-workspace.yaml
檔案的目錄)~/.npmrc
)/etc/npmrc
)所有 .npmrc
檔案都遵循 INI-formatted 列表,包含 key = value
引數。
在這裡,我們在.npmrc
檔案設定了,engine-strict=true
結合根目錄的package.json
中的 engines
欄位,可以指定執行的 node 版和 pnpm 版
lowcode-platform
採用umi建立,感興趣的可以自行去umi官網檢視ui-material
採用阿里的低程式碼物料腳手架建立,感興趣的可以去看lowcode-engine我們假設把ui-material
專案作為基礎庫,讓lowcode-platform
去直接參照ui-material
庫,
我們可以在根目錄執行 pnpm add ui-material -r --filter lowcode-platform
。
執行完成之後,我們就可以在lowcode-platform
專案下直接參照改模組,不需要安裝。這裡我們用到了三個命令,分別是add
,-r
,--filter
。具體詳細內容可以參考官網。
add
命令可以參考:pnpm add-r
引數可以參考:pnpm -r, --recursive--filter
引數可以參考:過濾5.接下來,我們可以在根目錄下執行下pnpm i
安裝下依賴,設定下啟動指令碼
"clean-install": "pnpm clean && rm -rf ./{packages}/*/node_modules node_modules && pnpm i",
"dev": "pnpm -F \"lowcode-platform\" dev",
"build": "pnpm -F \"lowcode-platform\" build",
"dev:ui": "pnpm -F \"ui-material\" lowcode:dev",
"build:ui": "pnpm -F \"ui-material\" lowcode:build",
到這裡就可以了,你可以設定自己比較方便快捷的命令。
程式碼已上傳的github,如有需要,可自行下載檢視
如果你覺得該文章不錯,不妨
1、點贊,讓更多的人也能看到這篇內容
2、關注我,讓我們成為長期關係
3、關注公眾號「前端有話說」,裡面已有多篇原創文章,和開發工具,歡迎各位的關注,第一時間閱讀我的文章