解決 CesiumJS 1.100 源碼開發時 pnpm 不兼容的問題

1.100 版本後, CesiumJS 對源碼進行了分包(也就是 workspaces,又一說法 monoreponpm@v7pnpm 都原生支持這種解決方案),使用的是 npm 原生的 workspaces 方案,即在 package.json 中新增字段:

{
  "workspaces": [
    "packages/engine",
    "packages/widgets"
  ]
}

這條字段在搭配使用 pnpm 進行依賴安裝時看似沒什麼問題,但是在執行 gulpprepare 函數(任務)時,會對依賴內的文件進行復制,對於依賴的安裝管理,npm 和 pnpm 的策略是不同的,這就會導致有一些依賴的文件複製失敗,提示找不到文件的錯誤。

根據羣友 @zouyaoji 的方案,解決方法是開啓 .npmrc 配置文件內的 shamefully-hoist=true 選項(設爲 true),重新執行:

pnpm install

之後會對根一級的 node_modules 進行重生成,這樣就沒問題了,可以常規執行 buildbuild-tsbuild-docs 指令進行源代碼開發調試。

另外,由於 npm 的 workspaces 方案與 pnpm 不兼容,所以你還可能需要創建一個 pnpm-workspace.yaml 並補齊內容(當然後期官方也許會補齊,說不準呢):

packages:
  - 'packages/engine'
  - 'packages/widgets'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章