Einleitung: Warum ist tsconfig.json nicht nur eine Datei?
\n\nJeder, der schon einmal in TypeScript programmiert hat, ist auf die geheimnisvolle Datei tsconfig.json gestoßen. Wenn Sie Anfänger sind, haben Sie sie wahrscheinlich einfach aus der Dokumentation kopiert oder gegoogelt, "wie man tsconfig.json generiert". Und wenn Sie ein erfahrener Entwickler sind, haben Sie sich vielleicht schon einmal gefragt: Was passiert eigentlich unter der Haube, wenn ich tsc --init ausführe?
In diesem Artikel geben wir nicht nur ein fertiges Rezept, sondern werfen einen Blick in den Maschinenraum des TypeScript-Compilers. Sie erfahren, wie der Compiler die Konfiguration liest, welche Flags für die Code-Strenge verantwortlich sind und wie Sie schnell einen eigenen minimalen "Generator" für tsconfig.json schreiben können. Los geht's!
\n\n1. Was ist tsconfig.json und wozu braucht man es?
\n\ntsconfig.json ist eine JSON-Datei, die dem TypeScript-Compiler (tsc) sagt, wie genau er Ihren Code verarbeiten soll. Ohne sie arbeitet tsc im "Standard"-Modus, aber das reicht für ernsthafte Projekte oft nicht aus.
Unter der Haube definiert tsconfig.json:
\n- \n
- Welche Dateien kompiliert werden sollen (Schlüssel
include,exclude,files). \n - Wohin das Ergebnis abgelegt werden soll (Schlüssel
outDir). \n - Welche JavaScript-Versionen unterstützt werden sollen (Schlüssel
target). \n - Wie streng die Typen überprüft werden sollen (Schlüssel
strict,noImplicitAnyusw.). \n - Zusätzliche Module und Pfade. \n
Wenn Sie die Frage stellen "how can I generate a tsconfig.json file", lautet die Antwort normalerweise: tsc --init. Aber lassen Sie uns verstehen, was dieser Befehl genau generiert.
2. Der Befehl tsc --init: Was steckt unter der Haube?
\n\nFühren Sie im Terminal aus:
\nnpx tsc --init\n\nIm Stammverzeichnis des Projekts erscheint eine Datei tsconfig.json mit vielen auskommentierten Einstellungen. Tatsächlich führt der TypeScript-Compiler unter der Haube den folgenden Algorithmus aus:
- \n
- Er prüft, ob bereits eine
tsconfig.jsonim aktuellen Verzeichnis existiert. \n - Falls nicht, erstellt er eine Vorlage mit Standardeinstellungen. \n
- Er setzt
target: "es2016",module: "commonjs",strict: trueund andere sinnvolle Werte. \n - Alle anderen Optionen kommentiert er aus, damit der Entwickler sie bei Bedarf auskommentieren kann. \n
Aber was, wenn Sie die Generierung anpassen möchten? Zum Beispiel den strikten Modus sofort aktivieren oder einen Pfad für die Ausgabedateien festlegen? Dazu können Sie Ihr eigenes Skript schreiben.
\n\n2.1. Beispiel: Ein eigener tsconfig.json-Generator in TypeScript
\n\nStellen Sie sich vor, Sie schreiben ein Tool zur automatischen Einrichtung von Projekten. So könnte eine Funktion aussehen, die tsconfig.json unter der Haube generiert:
import * as fs from 'fs';\nimport * as path from 'path';\n\ninterface TsConfig {\n compilerOptions: {\n target: string;\n module: string;\n strict: boolean;\n outDir: string;\n rootDir: string;\n esModuleInterop: boolean;\n skipLibCheck: boolean;\n forceConsistentCasingInFileNames: boolean;\n };\n include: string[];\n exclude: string[];\n}\n\nfunction generateTsConfig(\n target: string = 'ES2020',\n outDir: string = './dist',\n rootDir: string = './src',\n strict: boolean = true\n): TsConfig {\n return {\n compilerOptions: {\n target,\n module: 'commonjs',\n strict,\n outDir,\n rootDir,\n esModuleInterop: true,\n skipLibCheck: true,\n forceConsistentCasingInFileNames: true,\n },\n include: ['src/**/*'],\n exclude: ['node_modules', 'dist'],\n };\n}\n\n// Generieren und speichern\nconst config = generateTsConfig();\nfs.writeFileSync(\n path.join(process.cwd(), 'tsconfig.json'),\n JSON.stringify(config, null, 2)\n);\nconsole.log('tsconfig.json erstellt!');\n