Jak używać TypeScript w konfiguracji Monorepo
Konfiguracja monorepo pozwala zarządzać wieloma pakietami lub projektami w jednym repozytorium. W przypadku TypeScript ta konfiguracja jest szczególnie wydajna w przypadku udostępniania typów, interfejsów, a nawet narzędzi w różnych pakietach. Ten przewodnik przeprowadzi Cię przez proces konfiguracji TypeScript w środowisku monorepo.
1. Konfigurowanie Monorepo
Aby skonfigurować monorepo, możesz użyć narzędzi takich jak npm workspaces lub yarn workspaces. Te narzędzia pozwalają zarządzać wieloma pakietami w tym samym repozytorium i ułatwiają udostępnianie kodu między projektami.
1.1 Inicjalizacja Monorepo
Najpierw utwórz nowy folder dla swojego monorepo i zainicjuj go poleceniem npm lub yarn.
mkdir my-monorepo
cd my-monorepo
npm init -yNastępnie skonfiguruj obszary robocze w pliku package.json:
{
"name": "my-monorepo",
"version": "1.0.0",
"private": true,
"workspaces": [
"packages/*"
]
}Ta konfiguracja informuje npm lub yarn, że wszystkie pakiety będą znajdować się w folderze packages.
2. Dodawanie pakietów do Monorepo
Utwórz dwa pakiety w swoim monorepo. W tym przykładzie utworzymy pakiet shared dla kodu wielokrotnego użytku i pakiet web-app dla aplikacji front-end.
mkdir -p packages/shared
mkdir -p packages/web-appWewnątrz każdego pakietu zainicjuj plik package.json:
cd packages/shared
npm init -y
cd ../web-app
npm init -y3. Dodawanie TypeScript do Monorepo
Następnie skonfigurujemy TypeScript. Zainstaluj TypeScript i niezbędne zależności w katalogu głównym swojego monorepo:
npm install typescript --save-devUtwórz plik tsconfig.json na poziomie głównym, aby zdefiniować konfigurację TypeScript dla całego monorepo:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"*": ["packages/*/src"]
},
"composite": true,
"declaration": true,
"outDir": "dist",
"rootDir": ".",
"skipLibCheck": true,
"module": "ESNext",
"target": "ES6",
"moduleResolution": "node"
},
"include": ["packages/*"]
}Kluczem jest tutaj opcja paths, która umożliwia TypeScript zrozumienie importów z różnych pakietów w monorepozytorium.
4. Konfigurowanie TypeScript w każdym pakiecie
Każdy pakiet potrzebuje własnego tsconfig.json, aby działać poprawnie w monorepo. Oto przykładowa konfiguracja dla pakietu shared:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "src",
"outDir": "dist"
},
"include": ["src"]
}A dla pakietu web-app:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "src",
"outDir": "dist"
},
"include": ["src"]
}Teraz TypeScript może być używany w każdym pakiecie, a konfiguracje są udostępniane z głównego pliku tsconfig.json.
5. Dodawanie kodu TypeScript do pakietów
Dodajmy przykładowy kod TypeScript do obu pakietów. W pakiecie shared utwórz folder src i dodaj plik TypeScript:
mkdir -p packages/shared/src
touch packages/shared/src/index.tsW index.ts wyeksportuj prostą funkcję:
export const greet = (name: string): string => {
return `Hello, ${name}!`;
}W pakiecie web-app utwórz folder src i plik index.ts:
mkdir -p packages/web-app/src
touch packages/web-app/src/index.tsTeraz zaimportuj funkcję współdzieloną:
import { greet } from 'shared';
console.log(greet('TypeScript Monorepo'));6. Budowa Monorepo
Aby skompilować cały kod TypeScript w monorepo, musimy użyć kompilatora TypeScript. W katalogu głównym monorepo uruchom:
npx tsc --buildTo polecenie skompiluje wszystkie pakiety zgodnie z odpowiednimi plikami tsconfig.json.
Wniosek
W tym przewodniku omówiliśmy, jak skonfigurować i używać TypeScript w monorepo. Organizując kod w strukturze monorepo, możesz łatwo udostępniać kod w wielu pakietach, co usprawni proces rozwoju. Dzięki silnemu typowaniu i odniesieniom do projektów TypeScript ta konfiguracja jest idealna dla aplikacji na dużą skalę lub bibliotek współdzielonych.