簡體   English   中英

typescript 版本不匹配

[英]typescript version mismatch

我的項目有這樣的結構:

workspace
  |__pkg1
      |__tsconfig.json
      |__package.json
      |__ts/
  |__pkg2
      |__tsconfig.json
      |__package.json
      |__ts/
  |__lerna.json
  |__package.json
  |__tsconfig.json

在 workspace/package.json 中,我將 typescript 版本指定為“^4.2.3”。 要為所有包安裝依賴項,請在工作區目錄下運行命令:

npm install & lerna bootstrap && lerna run build

“lerna bootstrap”將為 pkg1 和 pkg2 安裝所有依賴項,“lerna run build”(相當於在 pkg1 和 pkg2 中運行“npx tsc”)將從 pkg1 和 pkg2 在 ts/ 文件夾中編譯 typescript。 原來workspace目錄下的tsc版本確實是4.2.3,但是在pkg1和pkg2中,typescript版本是4.5.2

cd pkg1 && npx tsc -v # output is Version 4.5.2

我已嘗試 (1) 將 workspace/package.json 中的“^4.2.3”更改為“4.2.3”,(2) 在 pkg1 和 pkg2 的 package.json 中明確指定 typescript 版本。 (3) 刪除所有 package-lock.json 文件。 但是,它們都不起作用。 我該如何解決?

實際上,我需要為此項目構建一個干凈的 docker 圖像。 它有多個pkg,所以我不想在每個package目錄中一個一個安裝typescript。

嘗試從 package-lock 中刪除與 typescript 相關的所有代碼。json 和 npm 再次安裝並檢查。 我認為這應該可以解決問題,因為我以前也經歷過。

我相信您的問題可能是 npm 版本控制范式的結果,它既簡單又令人困惑。

我剛剛遇到了類似的問題。 我的package.json指定 typescript 版本^4.6.2 ,但我的package-lock.json總是最終版本4.9.4

我通過將 package.json 中的package.json版本設置為~4.6.2解決了這個問題。 這確保 npm 將我的 typescript package 升級到較新的補丁版本,但絕不會升級為較新的次要版本。 將脫字符號 ( ^ ) 更改為波浪號 ( ~ ) 后,我運行了npm install ,我的package-lock.json的 typescript 版本穩定在4.6.4

為 npm 提供 package 升級約定的簡要總結(我可能會補充說,它被覆蓋得令人作嘔,但不知何故總是讓人絆倒,包括我):

  1. NPM package 版本控制是{major}.{minor}.{patch}
  2. ^指示 npm 升級到最新的次要版本。
  3. ~指示npm升級到最新補丁版本。

當沒有波浪號或插入符號時會發生什么? 我懷疑它指示 npm 選擇該特定版本,但鑒於這對您不起作用,也許我錯了? 就像我說的,直截了當又令人困惑。

這個 Stack Overflow 答案更詳細地解釋了package.json版本控制的含義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM