npm - TypeScript'i yeni bir ana sürüme nasıl yükseltirim


Git deposundaki TypeScript çalışma zamanı, tüm paketleri yükselttikten ve node_modules ile package-lock.json'u sildikten sonra npm install ile yeniden yüklememe rağmen hâlâ 4.9.5 olarak görünüyor.

tsc sürümünü 5.0'dan daha güncel nasıl alabilirim?

npx tsc --version
Version 4.9.5

./node_modules/.bin/tsc --version
Version 4.9.5

Tüm paketlerin "typescript"i bir geliştirme bağımlılığı olarak listelediği bir NPM monorepom var. Bir süre önce her paket üzerinde "npm uninstall typescript" komutunu kullandım, ardından "npm install typescript -D" ile yeniden ekledim, böylece paket bağımlılıkları yeni ana sürümü listeliyordu (önce v4 idi, şimdi v5).

Paketlerimden birini (create-react-app) oluşturduğumda, ESLint bana TypeScript sürüm 4.9.5 kullandığımı düşündüğünü gösteriyor.

WARNING: You are currently running a version of TypeScript which is not officially supported by @typescript-eslint/typescript-estree.

You may find that it works just fine, or you may not.

SUPPORTED TYPESCRIPT VERSIONS: >=3.3.1 <4.9.0

YOUR TYPESCRIPT VERSION: 4.9.5

Please only submit bug reports when using the officially supported version.

Hiçbir package.json dosyam veya package-lock.json dosyam v4 göstermiyor. Hepsi v5 gösteriyor.

npm list --depth=0 | grep -i typescript
│ └── [email 
│ └── [email 
│ ├── [email 
│ └── [email 
│ ├── [email 
│ ├── @babel/[email 
│ ├── [email 
│ ├── [email 
│ ├── [email 
│ ├── @babel/[email  deduped
│ ├── @rollup/[email 
│ └── [email 
│ ├── [email 
│ ├── [email 
│ └── [email 
│ └── [email 
│ └── [email 
│ └── [email 
│ └── [email 
│ ├── [email 
│ ├── [email 
│ ├── [email 
│ ├── [email 
│ ├── [email 
│ ├── [email 
│ ├── @babel/[email  deduped
│ ├── [email 
│ ├── [email 
│ └── [email 
│ ├── [email 
│ └── [email 
│ └── [email 
│ ├── [email 
│ └── [email 
│ └── [email 
│ └── [email 

Şu anda nvm aracılığıyla node 16.19 ve npm 8.11 kullanıyorum.

node --version
v16.19.1
npm --version
8.19.3

DÜZENLEME: Bu gönderi Typescript hakkında, React veya Create-React-App hakkında değil, bir NPM çalışma alanları (mono) deposunda. Herhangi bir karışıklık için özür dilerim.

Cevap #1

Eğer sen

  1. bir NPM çalışma alanları monoreposu kullanarak,
  2. ve iç içe geçmiş paketlerin Typescript üzerinde bir (dev) bağımlılığı var,
  3. ve TypeScript sürümünü yükselttiniz,
  4. ama npx tsc --version yine de eski sürümü gösteriyor

Örneğin:

cd <repo_clone_directory>

ls -1 packages/
micro-service-1
micro-service-2
ui-1
ui-2

npx tsc --version
Version 4.9.5

O zaman muhtemelen en üst düzey package.json dosyanıza Typescript için bir (dev) bağımlılığı EKLEmeniz gerekiyor.

cd <repo_clone_directory>

npm install typescript

npx tsc --version
Version 5.2.2

Ve eğer CreateReactApp paketiniz, ESLint çalıştırıldığında TypeScript sürümünüzün desteklenmediğini belirtiyorsa, o zaman yapmalısınız

  1. ESLint'i geçici olarak devre dışı bırak.
  2. Sonunda CRA terk edildiği için Vitejs'e geçilecek.

packages/ui-1/package.json dosyasından

  "scripts": {
    "start": "DISABLE_ESLINT_PLUGIN=true react-scripts start",
    "build": "DISABLE_ESLINT_PLUGIN=true react-scripts build",

DÜZENLEME: En üst düzey package.json dosyasına "typescript" eklemek, küçük sürüm yükseltmeleri için de yardımcı olur.