Zum Inhalt springen

Projekt erstellen

Ein modernes Vue-Projekt benötigt verschiedene Tools für Build, Qualitätssicherung und Testing.

Bundler transformieren und bündeln Source-Code für den Browser.

BundlerBeschreibungVue-Support
ViteSchnell, ESM-basiert, von Vue-TeamErstklassig
WebpackEtabliert, sehr konfigurierbarVia vue-loader
ParcelZero-ConfigVia Plugin
esbuildExtrem schnell, Go-basiertLimitiert
RollupLibrary-BundlingVia Plugin
  • Blitzschneller Dev-Server (ESM)
  • Hot Module Replacement (HMR)
  • Optimierter Production Build
  • TypeScript out-of-the-box
  • Von Vue-Core-Team entwickelt
Terminal-Fenster
npm create vue@latest
# oder
npm create vite@latest --template vue
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
plugins: [vue()],
resolve: {
alias: {
'@': '/src'
}
},
server: {
port: 3000
}
})

Linter analysieren Code statisch und finden Fehler, Bugs und Style-Probleme.

ToolSpracheGeschwindigkeitVue-Support
ESLintJavaScriptMitteleslint-plugin-vue
oxlintRustSehr schnellJa
BiomeRustSehr schnellExperimentell
typescript-eslint-MittelVia ESLint
Terminal-Fenster
npm install -D eslint @eslint/js
npm install -D eslint-plugin-vue
npm install -D typescript-eslint # Für TS
{
"scripts": {
"lint": "eslint .",
"lint:fix": "eslint . --fix"
}
}
import js from '@eslint/js'
import vue from 'eslint-plugin-vue'
import ts from 'typescript-eslint'
export default [
js.configs.recommended,
...ts.configs.recommended,
...vue.configs['flat/recommended'],
{
rules: {
'vue/multi-word-component-names': 'off'
}
}
]

Formatter sorgen für konsistenten Code-Stil im gesamten Projekt.

ToolBeschreibungVue-Support
PrettierStandard-FormatterVollständig
BiomeLinter + FormatterExperimentell
dprintRust, konfigurierbarVia Plugin
Terminal-Fenster
npm install -D prettier
{
"scripts": {
"format": "prettier --write .",
"format:check": "prettier --check ."
}
}
{
"semi": false,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "es5",
"printWidth": 100,
"vueIndentScriptAndStyle": true
}

ESLint und Prettier können sich in die Quere kommen. Lösung:

Terminal-Fenster
npm install -D eslint-config-prettier
eslint.config.js
import js from '@eslint/js'
import vue from 'eslint-plugin-vue'
import prettier from 'eslint-config-prettier'
export default [
js.configs.recommended,
...vue.configs['flat/recommended'],
prettier, // Muss als letztes kommen!
{
rules: {
// Eigene Regeln
}
}
]
ToolTypGeschwindigkeitVue-Support
VitestUnit/IntegrationSehr schnellErstklassig
JestUnit/IntegrationMittelVia Config
CypressE2E-Component Testing
PlaywrightE2E-Via Setup
Terminal-Fenster
npm install -D vitest @vue/test-utils
vite.config.js
export default defineConfig({
test: {
environment: 'happy-dom',
globals: true
}
})
  • Nutzt Vite-Config
  • Native ESM
  • HMR für Tests
  • Jest-kompatible API
Terminal-Fenster
npm create vue@latest my-project
# Auswahl:
# TypeScript? Yes
# JSX? No
# Vue Router? Yes
# Pinia? Yes
# Vitest? Yes
# E2E Testing? Playwright
# ESLint? Yes
# Prettier? Yes
# Vue DevTools? Yes
  • Bundler: Vite
  • Linting: ESLint + eslint-plugin-vue
  • Formatting: Prettier
  • Testing: Vitest + Playwright

Für kleinere Projekte oder schnelle Prototypen bietet create-vite einen leichtgewichtigen Start:

Terminal-Fenster
npm create vite@latest my-app -- --template vue
# oder mit TypeScript
npm create vite@latest my-app -- --template vue-ts
  • Nur Vite + Vue
  • Minimale Abhängigkeiten
  • ~15 MB node_modules
  • Kein Router, Pinia, Testing
Terminal-Fenster
npm install -D husky lint-staged
npx husky init
.husky/pre-commit
npx lint-staged
package.json
{
"lint-staged": {
"*.{js,ts,vue}": [
"eslint --fix",
"prettier --write"
],
"*.{css,scss,md,json}": [
"prettier --write"
]
}
}
KategorieStandardSchnelle Alternative
BundlerVite-
LintingESLintoxlint, Biome*
FormattingPrettierBiome*
Unit TestingVitestJest
E2E TestingPlaywrightCypress
Type CheckingTypeScript-

* Vue-Support noch experimentell

Offizielle Dokumentation:

Alternative Tools: