[英]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 升級約定的簡要總結(我可能會補充說,它被覆蓋得令人作嘔,但不知何故總是讓人絆倒,包括我):
{major}.{minor}.{patch}
。^
指示 npm 升級到最新的次要版本。~
指示npm升級到最新補丁版本。當沒有波浪號或插入符號時會發生什么? 我懷疑它指示 npm 選擇該特定版本,但鑒於這對您不起作用,也許我錯了? 就像我說的,直截了當又令人困惑。
這個 Stack Overflow 答案更詳細地解釋了package.json
版本控制的含義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.