Sådan bruges TypeScript i en Monorepo-opsætning
En monorepo-opsætning giver dig mulighed for at administrere flere pakker eller projekter i et enkelt lager. Med TypeScript er denne opsætning særligt kraftfuld til deling af typer, grænseflader og endda hjælpeprogrammer på tværs af forskellige pakker. Denne guide vil guide dig gennem, hvordan du opsætter TypeScript i et monorepo-miljø.
1. Opsætning af Monorepo
For at oprette en monorepo kan du bruge værktøjer som npm arbejdsområder eller garn arbejdsområder. Disse værktøjer giver dig mulighed for at administrere flere pakker i det samme lager og gør det nemt at dele kode på tværs af projekter.
1.1 Initialisering af en Monorepo
Først skal du oprette en ny mappe til din monorepo og initialisere den med npm eller yarn.
mkdir my-monorepo
cd my-monorepo
npm init -yKonfigurer derefter arbejdsområder i din package.json:
{
"name": "my-monorepo",
"version": "1.0.0",
"private": true,
"workspaces": [
"packages/*"
]
}Denne opsætning fortæller npm eller garn, at alle pakkerne vil leve i mappen packages.
2. Tilføjelse af pakker til Monorepo
Opret to pakker i din monorepo. I dette eksempel opretter vi en delt-pakke til genbrugelig kode og en web-app-pakke til en frontend-applikation.
mkdir -p packages/shared
mkdir -p packages/web-appInitialér en package.json: inde i hver pakke
cd packages/shared
npm init -y
cd ../web-app
npm init -y3. Tilføjelse af TypeScript til Monorepo
Dernæst sætter vi TypeScript op. Installer TypeScript og de nødvendige afhængigheder i roden af din monorepo:
npm install typescript --save-devOpret et rodniveau tsconfig.json for at definere TypeScript-konfigurationen for hele monorepoen:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"*": ["packages/*/src"]
},
"composite": true,
"declaration": true,
"outDir": "dist",
"rootDir": ".",
"skipLibCheck": true,
"module": "ESNext",
"target": "ES6",
"moduleResolution": "node"
},
"include": ["packages/*"]
}Nøglen her er paths muligheden, som tillader TypeScript at forstå importer fra forskellige pakker i monorepoen.
4. Konfiguration af TypeScript i hver pakke
Hver pakke har brug for sin egen tsconfig.json for at fungere korrekt i monorepoen. Her er et eksempel på konfiguration for shared-pakken:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "src",
"outDir": "dist"
},
"include": ["src"]
}Og for web-app-pakken:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "src",
"outDir": "dist"
},
"include": ["src"]
}Nu kan TypeScript bruges i hver pakke, og konfigurationerne deles fra roden tsconfig.json.
5. Tilføjelse af TypeScript-kode til pakkerne
Lad os tilføje et eksempel på TypeScript-kode til begge pakker. I shared-pakken skal du oprette en src-mappe og tilføje en TypeScript-fil:
mkdir -p packages/shared/src
touch packages/shared/src/index.tsI index.ts, eksporter en simpel funktion:
export const greet = (name: string): string => {
return `Hello, ${name}!`;
}I web-app-pakken skal du oprette en src-mappe og en index.ts-fil:
mkdir -p packages/web-app/src
touch packages/web-app/src/index.tsImporter nu den delte funktion:
import { greet } from 'shared';
console.log(greet('TypeScript Monorepo'));6. Opbygning af Monorepo
For at kompilere al TypeScript-kode i monorepoen skal vi bruge TypeScript-kompileren. Kør ved roden af monorepoen:
npx tsc --buildDenne kommando vil kompilere alle pakkerne ved at følge deres respektive tsconfig.json filer.
Konklusion
I denne vejledning dækkede vi, hvordan man opsætter og bruger TypeScript i en monorepo. Ved at organisere din kode i en monorepo-struktur kan du nemt dele kode på tværs af flere pakker, hvilket gør din udviklingsproces mere effektiv. Med TypeScripts stærke skrive- og projektreferencer er denne opsætning perfekt til store applikationer eller delte biblioteker.