Skip to content

npm

sh
npm i @eslint/js eslint eslint-config-prettier eslint-plugin-prettier fs-extra globals prettier typescript-eslint ts-node -D

npx tsc --init

修改 tsconfig.json

使用 ESModule 替代 Commonjs,并且允许默认 any

json
"moduleResolution": "node10"
"noImplicitAny": false,

.prettier

json
{
  "semi": false,
  "singleQuote": true,
  "tabWidth": 2,
  "trailingComma": "none",
  "arrowParens": "avoid"
}

eslint.config.js

js
import js from '@eslint/js'
import globals from 'globals'
import tseslint from 'typescript-eslint'
import pluginPrettier from 'eslint-plugin-prettier'
import { defineConfig } from 'eslint/config'

export default defineConfig([
  {
    files: ['**/*.{js,mjs,cjs,ts,mts,cts,vue}'],
    plugins: { js, prettier: pluginPrettier },
    extends: ['js/recommended', 'plugin:prettier/recommended'],
    rules: {
      // 禁止未使用变量
      'no-unused-vars': ['warn'],
      // 启用 prettier 作为 eslint 规则
      'prettier/prettier': 'error'
    }
  },
  {
    files: ['**/*.{js,mjs,cjs,ts,mts,cts,vue}'],
    languageOptions: { globals: globals.browser }
  },
  tseslint.configs.recommended,
  pluginVue.configs['flat/essential']
])

.vscode/setting.json

json
{
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit"
  }
}