别信插件一键按钮,vscode插件如project tree generator生成的目录树常与真实文件系统不一致,尤其在pnpm workspace、lerna或软链接场景下,因依赖files.exclude/search.exclude过滤,易漏dist/、跳过符号链接、markdown转链接冗余;真正可靠的是终端直出tree或powershell命令,并手动比对。

导出项目结构别信插件一键按钮
VSCode 插件如 Project Tree Generator 生成的目录树,大概率和真实文件系统不一致——尤其遇到 pnpm workspace、lerna 或软链接(symlink)时,它只按 VSCode 的 files.exclude 和 search.exclude 过滤,而这两个配置本意是控制“显示/搜索”,不是定义“项目结构”。
实际风险包括:
- 漏掉
dist/或build/目录(你排除了它们,但架构图里该有) - 符号链接目标被跳过,导致子包路径消失
- Markdown 输出自动转成链接,粘贴到飞书/Notion 后多出冗余跳转
真正可靠的做法是终端直出:tree -L 3 -I "node_modules|.git|dist"(macOS/Linux),或 PowerShell:Get-ChildItem -Path . -Depth 2 -Force | Where-Object {$_.Name -notin @("node_modules",".git","dist")} | tree。导出后手动比对,才是用于 CI 文档或交接的底线。
自动生成 TypeScript 接口必须绕过 OpenAPI 文件硬编码
很多插件(比如叫 OpenAPI Generator 或自研的 swagger-to-ts 类)默认只认 openapi.json 或 swagger.yaml,但真实项目中后端给的可能是 v1.api.json、api-specs-v2.json,甚至分环境拆成多个文件。
关键操作点:
- 确认插件是否支持自定义路径:查其 README 是否提到
openapi.specPath或类似配置项 - 若插件读取失败,先用
curl -s http://localhost:3000/openapi.json > api-specs.json手动拉取并保存到项目根目录 - 检查 JSON 是否含
$ref外部引用——未内联的引用会导致生成失败,需先用openapi-cli bundle或speccy resolve预处理 - 生成命令行调用比插件 UI 更可控:
npx openapi-typescript api-specs.json --output src/types/api.ts
Prettier + ESLint 冲突时格式化光标乱跳的根本原因
保存后光标乱跳、红波浪线反复闪,不是插件坏了,而是 ESLint 在抢 Prettier 的活——两者规则打架,比如一个要分号、一个删分号,VSCode 在毫秒级来回触发格式化与修复。
必须切断冲突链:
- 在
.eslintrc.cjs的extends数组末尾加'prettier',且确保eslint-config-prettier已安装并也在extends中(顺序不能错) - VSCode 设置里关掉
eslint.format.enable,只留"editor.formatOnSave": true和"editor.defaultFormatter": "esbenp.prettier-vscode" - 删掉
package.json里的"prettier"字段中与 ESLint 重叠的规则(如semi,quotes),全部交给 ESLint 的rules控制
Path Intellisense 找不到 src/utils 不是插件问题
它没坏,只是没“看见”——默认只扫描当前 VSCode 工作区已加载的文件夹,不会递归进软链接、未添加的子目录,也不读 tsconfig.json 的 baseUrl 和 paths。
救急三步:
- 右键项目根目录 →
Add Folder to Workspace,把所有要用的模块目录显式加入工作区 - 在
settings.json里补映射:"path-intellisense.mappings": { "@utils": "${workspaceFolder}/src/utils" } - 如果用了
pnpm的public-hoist-pattern或hoistedDependencies,确保node_modules在工作区路径下可被遍历,否则路径补全会卡在第一层
最常被忽略的是:插件不会主动监听新创建的子目录,新建 src/hooks 后得手动刷新 VSCode(Ctrl+Shift+P → Developer: Reload Window),否则补全列表里永远没有它。











