From 4a25ab304984984467df8ea4ae7d8b535086a943 Mon Sep 17 00:00:00 2001 From: baozaotumao Date: Mon, 1 Jun 2026 21:49:51 -0700 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=A8=A1=E6=9D=BF=E8=87=AA=E5=B8=A6=20?= =?UTF-8?q?.vscode/settings.json=20+=20extensions.json=EF=BC=88=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=99=A8=E5=AE=9E=E6=97=B6=E6=8A=A4=E6=A0=8F=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - settings.json:formatOnSave + ruff(保存修复/整理import) + eslint onType; Pylance basic 即时反馈,权威 strict 交 mypy 扩展读 pyproject,与 pre-commit 同源 - extensions.json:按服务推荐 ruff/pylance/mypy/eslint/prettier 扩展 - 始终生成(不挂 vscode_auto_watch 开关),按 include_backend/agent/frontend 裁剪 - 测试覆盖 全栈/仅后端/仅前端 三配置,条件填充正确、JSON 合法 --- template/.vscode/extensions.json.jinja | 17 +++++++++++++ template/.vscode/settings.json.jinja | 33 ++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 template/.vscode/extensions.json.jinja create mode 100644 template/.vscode/settings.json.jinja diff --git a/template/.vscode/extensions.json.jinja b/template/.vscode/extensions.json.jinja new file mode 100644 index 0000000..73240a1 --- /dev/null +++ b/template/.vscode/extensions.json.jinja @@ -0,0 +1,17 @@ +// 由 scaffold 生成:打开项目时 VSCode 会提示安装这些扩展, +// 它们提供与 pre-commit 一致的编辑器实时检查(第 1 层护栏)。 +{ + "recommendations": [ +{%- if include_backend or include_agent %} + "charliermarsh.ruff", + "ms-python.python", + "ms-python.vscode-pylance", + "ms-python.mypy-type-checker", +{%- endif %} +{%- if include_frontend %} + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", +{%- endif %} + "redhat.vscode-yaml" + ] +} diff --git a/template/.vscode/settings.json.jinja b/template/.vscode/settings.json.jinja new file mode 100644 index 0000000..cd5e5fe --- /dev/null +++ b/template/.vscode/settings.json.jinja @@ -0,0 +1,33 @@ +// 由 scaffold 生成:编辑器实时护栏(第 1 层)。 +// 规则单一来源——ruff/mypy 读 pyproject.toml,eslint/prettier 读各自配置; +// 本文件只把编辑器指向同一套配置,不另设规则,避免与 pre-commit 漂移。 +{ + "editor.formatOnSave": true, +{%- if include_backend or include_agent %} + + // Python:ruff 做 lint+format(保存自动修复 + 整理 import) + "[python]": { + "editor.defaultFormatter": "charliermarsh.ruff", + "editor.codeActionsOnSave": { + "source.fixAll.ruff": "explicit", + "source.organizeImports.ruff": "explicit" + } + }, + // Pylance 走 basic(边打字即时反馈、噪声低); + // 权威 strict 类型检查交给 mypy 扩展,按 pyproject 的 [tool.mypy] 跑,与 pre-commit 一致 + "python.analysis.typeCheckingMode": "basic", + "mypy-type-checker.importStrategy": "fromEnvironment", +{%- endif %} +{%- if include_frontend %} + + // 前端:prettier 格式化 + eslint 实时(边打字边查) + "[typescript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, + "[typescriptreact]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, + "eslint.run": "onType", + "eslint.workingDirectories": [{ "directory": "frontend", "changeProcessCWD": true }], +{%- endif %} + + "files.eol": "\n", + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true +}