tree命令是跨平台生成项目结构文本最可靠方式,无需插件、不卡顿、格式干净;需注意工作目录、安装依赖及过滤参数,脚本化可提升复用性与准确性。

用 tree 命令直接生成结构文本最可靠
Windows/macOS/Linux 都能用,不依赖插件、不卡顿、格式干净。VSCode 内置终端执行即可,输出结果可直接复制进文档或代码注释里。
常见错误是直接在资源管理器里右键“在终端中打开”,却忘了确认当前工作目录是否为项目根目录——tree 默认只扫当前目录,路径错就白跑了。
- Windows 用户确保已安装
tree(Win10 1809+ 自带;旧版可装choco install tree或用 PowerShell 替代) - macOS 用户:运行
brew install tree;M1/M2 芯片需确认brew已正确初始化 - Linux 用户一般自带,若报
command not found,Debian/Ubuntu 执行sudo apt install tree - 想排除
node_modules、.git等目录?加参数:tree -I "node_modules|.git|.DS_Store"
VSCode 插件导出结构容易漏文件或格式错乱
像 Project Tree Generator 或 File Tree Generator 这类插件看似一键,实际常因 VSCode 文件监听延迟、符号链接未识别、隐藏文件逻辑不一致,导致输出缺目录或缩进错位。尤其当项目含 Lerna、pnpm workspace 或 symlinked packages 时,插件树形结构和真实磁盘结构对不上。
更隐蔽的问题是:插件默认按 VSCode 的 files.exclude 和 search.exclude 过滤,但这两个配置本意是控制搜索/显示,不是定义“项目结构”——你排除了 dist/,不代表它不该出现在架构图里。
- 如果非要用插件,请导出后手动比对
tree -L 3(限制深度 3)的结果 - 避免用插件生成用于 CI 文档或团队交接的结构图——可信度低
- 插件生成的 Markdown 格式常把文件名转成链接,粘贴到 Notion 或飞书后反而多出冗余跳转
用 PowerShell 或 Bash 脚本实现真正的一键导出
终端命令敲一遍不难,但重复操作容易记错参数。写个 3 行脚本存为 gen-tree.sh(macOS/Linux)或 gen-tree.ps1(Windows),以后双击或 alias 就行。
例如 Windows PowerShell 版本:
Set-Location $PSScriptRoot tree /F /A > tree-output.txt Write-Host "✅ 已生成 tree-output.txt"
macOS/Linux 的 gen-tree.sh:
#!/bin/bash tree -I "node_modules|.git|.DS_Store|dist|build" --dirsfirst -o tree-output.txt
-
--dirsfirst让目录排在文件前面,更符合人阅读习惯 -
-o直接写入文件,避免重定向符>在某些 shell 下权限失败 - 脚本第一行加
#!/bin/bash后,记得chmod +x gen-tree.sh - PowerShell 默认禁用脚本执行,首次需运行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
导出内容用于文档时,别忽略层级语义和可维护性
纯文本结构图没人会手动更新。如果把它放进 README.md,下次改了目录就得重新跑一遍,否则文档就失效。真要嵌入文档,建议用注释块包裹,并加一句说明来源:
``` # 项目结构(自动生成于 2024-06-12,运行 tree -I "node_modules|.git") ├── src/ │ ├── components/ │ └── index.ts └── package.json ```
- 日期和命令要手写补上,这是唯一能追溯生成依据的方式
- 不要用插件自动插入时间戳——多数插件的时间是渲染时刻,不是执行时刻
- 如果结构本身是设计约束(比如规定
src/features/下必须有index.ts),那文本导出只是快照,真正该做的是写个简单脚本校验目录规范











