1.100 版本後, CesiumJS 對源碼進行了分包(也就是 workspaces
,又一說法 monorepo
,npm@v7
、pnpm
都原生支持這種解決方案),使用的是 npm 原生的 workspaces
方案,即在 package.json
中新增字段:
{
"workspaces": [
"packages/engine",
"packages/widgets"
]
}
這條字段在搭配使用 pnpm
進行依賴安裝時看似沒什麼問題,但是在執行 gulp
的 prepare
函數(任務)時,會對依賴內的文件進行復制,對於依賴的安裝管理,npm 和 pnpm 的策略是不同的,這就會導致有一些依賴的文件複製失敗,提示找不到文件的錯誤。
根據羣友 @zouyaoji 的方案,解決方法是開啓 .npmrc
配置文件內的 shamefully-hoist=true
選項(設爲 true
),重新執行:
pnpm install
之後會對根一級的 node_modules
進行重生成,這樣就沒問題了,可以常規執行 build
、build-ts
、build-docs
指令進行源代碼開發調試。
另外,由於 npm 的 workspaces 方案與 pnpm 不兼容,所以你還可能需要創建一個 pnpm-workspace.yaml
並補齊內容(當然後期官方也許會補齊,說不準呢):
packages:
- 'packages/engine'
- 'packages/widgets'