Preparing your experience...

Neues React + TypeScript + Tailwind SPA starten (2025)

— 2 Min. Lesezeit

Neues React + TypeScript + Tailwind SPA starten (2025)

npx create-react-app myweb funktioniert zwar noch, erstellt aber kein funktionsfähiges React + TypeScript-Projekt mehr — siehe dieses Issue. Next.js und Gatsby sind für eine einfache SPA oft überdimensioniert, und Vite hat ein bekanntes Speicherproblem, das in der Praxis jedoch selten relevant ist. Vite bleibt die beste Standardwahl für eine React + TypeScript SPA — hier ist die Einrichtung.

Schritt 1: Projekt initialisieren

npm create vite@latest

Verwenden Sie diesen Befehl, wenn Sie das Projekt im aktuellen Verzeichnis initialisieren möchten: npm create vite@latest .

✔ Select a framework: › React
✔ Select a variant: › TypeScript + SWC

SWC ist 20x schneller als Babel auf einem einzelnen Thread und 70x schneller auf vier Kernen. Von der Website

Schritt 2: Prettier und ESLint einrichten

npm i prettier eslint-config-prettier eslint-plugin-prettier -D

Fügen Sie vite.config.ts zur Ignorieren-Liste in eslint.config.js hinzu:

export default tseslint.config(
  { ignores: ['dist', 'vite.config.ts'] },
  {
...

Importieren Sie eslint-plugin-prettier in eslint.config.js und fügen Sie es dann zur Plugins-Liste von ESLint hinzu.

import eslintPluginPrettier from 'eslint-plugin-prettier'

export default tseslint.config(
  ...
  plugins: {
    'react-hooks': reactHooks,
    'react-refresh': reactRefresh,
    'prettier': eslintPluginPrettier,
  },
  ...

Richten Sie nun die Regel für Prettier ein, indem Sie Folgendes zur Regeln-Liste in eslint.config.js hinzufügen:

'prettier/prettier': [
  'warn',
  {
    arrowParens: 'always',
    semi: false,
    trailingComma: 'none',
    tabWidth: 2,
    endOfLine: 'auto',
    useTabs: false,
    singleQuote: true,
    printWidth: 120,
    jsxSingleQuote: true
  }
]

Fügen Sie .prettierrc mit folgendem Inhalt hinzu:

{
  "arrowParens": "always",
  "semi": false,
  "trailingComma": "none",
  "tabWidth": 2,
  "endOfLine": "auto",
  "useTabs": false,
  "singleQuote": true,
  "printWidth": 120,
  "jsxSingleQuote": true
}

Schritt 3: Visual Studio Code konfigurieren

Installieren Sie folgende Erweiterungen:

Fügen Sie Folgendes zu settings.json hinzu:

"editor.codeActionsOnSave": {
    "source.fixAll.eslint": "always"
},
"[jsonc]": {
    "editor.defaultFormatter": "vscode.json-language-features"
},
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
},
"files.associations": {
    "*.css": "tailwindcss"
}

Schritt 4: Optionale Schritte

@/* auf src/* mappen, sodass Sie import '@/shared/Header' statt import '../../shared/Header' verwenden können — fügen Sie compilerOptions in tsconfig.json hinzu:

{
  "files": [],
  "references": [{ "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" }],
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    }
  }
}

Vite muss ebenfalls über diese Zuordnung informiert werden — fügen Sie alias in vite.config.js hinzu:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react-swc'
import path from 'path'

// https://vite.dev/config/
export default defineConfig({
  plugins: [react()],
  server: {
    port: 3000
  },
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src')
    }
  }
})

Fügen Sie Utility-Skripte für CI/CD hinzu, indem Sie dies im scripts-Bereich von package.json einfügen:

"scripts": {
  ...
  "lint:fix": "eslint . --fix",
  "prettier": "prettier --check \"src/**/(*.tsx|*.ts|*.css|*.scss)\"",
  "prettier:fix": "prettier --write \"src/**/(*.tsx|*.ts|*.css|*.scss)\""
}

Schritt 5: Tailwind CSS hinzufügen

Folgen Sie einfach dieser Anleitung: https://tailwindcss.com/docs/guides/vite

Das war's — zum Starten der Entwicklung: npm run dev

TenolifeTENOLIFE