This project is a comprehensive Nuxt 3 starter template with an advanced and modular ESLint setup. It emphasizes clean code, best practices, and development efficiency with a modern, flat ESLint configuration (eslint.config.ts).
This project uses the new flat config format (introduced in ESLint v9+) and separates concerns into modular files:
| File | Purpose |
|---|---|
eslint.config.ts |
🧩 Main config — imports all others |
eslint.ts |
🧪 Core JavaScript linting rules |
typescript-eslint.ts |
⚙️ TypeScript-specific linting |
vue.ts |
🧱 Vue.js component rules |
vue-i18n.ts |
🌐 i18n internationalization rules |
stylistic.ts |
🎨 Code style and formatting |
jconc.ts |
📦 JSON/JSONC file rules |
- Disallow problematic code (e.g.,
var, unused vars) - Encourage modern syntax (arrow functions, template literals)
- Limit complexity (e.g., max depth, max nesting)
- Strict typing and method signature enforcement
- No shadowed variables or implicit
anys - Promotes type safety and clarity
- Enforces
<template> → <script> → <style>order - Mandates
<script setup>usage - Typed
propsandemitsrequired - Enforces naming and attribute order conventions
- Locale keys must be in
snake_case - Prevents missing or unused translations
- Handles proper file structure and versioning
- Unified quote style, spacing, and semicolons
- Clean and modern stylistic conventions
- Supports linting for
.jsonand.jsoncfiles - Automatically sorts locale files
Using withNuxt() in the main ESLint config, Nuxt-specific files and patterns are seamlessly linted following best practices — including auto-imported components, composables, and app directories.
# Install dependencies
npm install
# or
pnpm install# Run linter
npm run lint
# or
pnpm lint# Fix auto-fixable issues
npm run lint:fix
# or
pnpm lint:fix- ESLint v9+
@typescript-eslint/*eslint-plugin-vueeslint-plugin-jsonceslint-plugin-vue-i18n@stylistic/eslint-plugin