Common Vite Config Files

vite.config.ts 

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'

const pathResolve = (dir: string): any => resolve(__dirname, '.', dir)

export default defineConfig({
  resolve: {
    alias: [
      {
        find: "@/",
        replacement: pathResolve('src') + '/',
      },
    ],
  },
  plugins: [vue()],
  css: {
    preprocessorOptions: {
      scss: { additionalData: `@import "${pathResolve("src")}/assets/scss/variables.scss";` },
      less: {
        javascriptEnabled: true,
        additionalData: `@import "${pathResolve('src')}/assets/less/variables.less";`
      }
    },
  },
})

tsconfig.json

{
  "compilerOptions": {
    "target": "esnext",
    "useDefineForClassFields": true,
    "module": "esnext",
    "moduleResolution": "node",
    "strict": true,
    "jsx": "preserve",
    "sourceMap": true,
    "resolveJsonModule": true,
    "isolatedModules": true,
    "esModuleInterop": true,
    "lib": ["esnext", "dom"],
    "skipLibCheck": true,
    "allowJs": false,
    "baseUrl": "./",
    "paths": {
      "@/*": ["src/*"],
    },
  },
  "include": [
    "src/**/*.ts", 
    "src/**/*.d.ts", 
    "src/**/*.tsx", 
    "src/**/*.vue",
  ],
  "references": [{ "path": "./tsconfig.node.json" }]
}

tsconfig.node.json

{
  "compileroptions": {
    "composite": true,
    "module": "esnext",
    "moduleresolution": "node",
  },
  "include": ["vite.config.ts"]
}

.vscode/settings.json

{
    "editor.detectIndentation": false,
    "editor.tabSize": 2,
    "editor.formatOnSave": true,
    "javascript.format.insertSpaceBeforeFunctionParenthesis": true,
    "editor.codeActionsOnSave": {
        "source.fixAll.eslint": true,
        "eslint.autoFixOnSave": true
    },
    "eslint.format.enable": true,
    "eslint.validate": [
        "javascript",
        "vue"
    ],
    "diffEditor.ignoreTrimWhitespace": true,
    "editor.formatOnType": true,
    // "files.autoSave": "onFocusChange",
    "editor.defaultFormatter": "dbaeumer.vscode-eslint",
    "editor.suggest.snippetsPreventQuickSuggestions": false,
    "[javascript]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    "[html]": {
        "editor.defaultFormatter": "vscode.html-language-features"
    },
    "js/ts.implicitProjectConfig.checkJs": true,
    "[vue]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    "[typescript]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    "[json]": {
      "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
}