Surfaced during WS-3 1c-prep follow-up: Cursor's ESLint extension uses
strict module resolution and crashed on every plugin in the
@antfu/eslint-config-vue extends-chain that was only resolvable via
pnpm-hoisting in terminal.
Direct deps added (versions match what was already in pnpm store —
zero version shifts):
- 12 unscoped ESLint plugins (eslint-plugin-{antfu,es-x,html,i,jest,
jsdoc,jsonc,markdown,n,no-only-tests,unused-imports,yml,
eslint-comments})
- vue-eslint-parser
- @antfu/eslint-config-basic + @antfu/eslint-config-ts (extends targets)
- @stylistic/eslint-plugin-js + @stylistic/eslint-plugin-ts
.vscode/settings.json: removed redundant root-level
editor.defaultFormatter (per-language overrides do the job).
ESLint extension now activates correctly, server runs, save-on-format
works for TS/Vue files. Verified via smoke test: double quote in
useImpersonationStore.ts:1 was auto-corrected to single quote on Cmd+S.
Note: package.json declares some deprecated dependencies that pnpm
warns about (@antfu/eslint-config-vue@0.43.1, eslint@8.57.1,
eslint-plugin-i@2.28.1, eslint-plugin-markdown@3.0.1). Those are
pre-existing — not introduced here. Migration to ESLint v9 + flat
config + @antfu/eslint-config (modern) is a separate workstream.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
61 lines
1.4 KiB
JSON
61 lines
1.4 KiB
JSON
{
|
|
"editor.formatOnSave": true,
|
|
"editor.tabSize": 2,
|
|
"editor.codeActionsOnSave": {
|
|
"source.fixAll.eslint": "explicit"
|
|
},
|
|
"eslint.format.enable": true,
|
|
"eslint.validate": [
|
|
"javascriptreact",
|
|
"typescriptreact",
|
|
"javascript",
|
|
"typescript",
|
|
"vue",
|
|
"html"
|
|
],
|
|
"eslint.useFlatConfig": false,
|
|
"eslint.nodePath": "apps/app/node_modules",
|
|
"eslint.run": "onSave",
|
|
"eslint.workingDirectories": [
|
|
{
|
|
"directory": "apps/admin",
|
|
"changeProcessCWD": true
|
|
},
|
|
{
|
|
"directory": "apps/app",
|
|
"changeProcessCWD": true
|
|
},
|
|
{
|
|
"directory": "apps/portal",
|
|
"changeProcessCWD": true
|
|
}
|
|
],
|
|
"prettier.enable": false,
|
|
"[php]": {
|
|
"editor.defaultFormatter": "bmewburn.vscode-intelephense-client",
|
|
"editor.tabSize": 4
|
|
},
|
|
"[typescript]": {
|
|
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
|
|
},
|
|
"[typescriptreact]": {
|
|
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
|
|
},
|
|
"[javascript]": {
|
|
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
|
|
},
|
|
"[vue]": {
|
|
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
|
|
},
|
|
"typescript.preferences.importModuleSpecifier": "relative",
|
|
"typescript.suggest.autoImports": true,
|
|
"files.associations": {
|
|
"*.php": "php",
|
|
".env*": "dotenv"
|
|
},
|
|
"search.exclude": {
|
|
"**/node_modules": true,
|
|
"**/vendor": true,
|
|
"**/dist": true
|
|
}
|
|
} |