Skip to content

Commit 260b4c4

Browse files
committed
docs: 添加脚本目录重构计划文档
添加详细的重构计划文档,说明如何重新组织脚本目录结构以提升可维护性和可发现性。包括影响面分析、实施步骤、验证方法和后续扩展计划。
1 parent e3585d4 commit 260b4c4

1 file changed

Lines changed: 113 additions & 0 deletions

File tree

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
## Plan
2+
- [ ] **影响面分析**
3+
- 目录调整:集中脚本至 `scripts/` 按语言与领域分类;`clis/` 统一为多文件工程包;保留 `config/`, `docs/`, `profile/` 等现有分区
4+
- 潜在风险:历史脚本调用路径失效;CI/任务计划器绑定的路径需更新;文档内链接需要同步
5+
- [ ] **Step 1: Context Gathering**
6+
- 盘点现有 `.ps1` 脚本用途与依赖,按领域标注(媒体、文件系统、网络、DevOps、杂项)
7+
- 识别需要保留为独立工程的 CLI(如 `clis/json-diff-tool`)
8+
- [ ] **Step 2: Implementation (规划)**
9+
- 建立统一的 `scripts/`(单文件脚本)与 `packages/`(多文件工程)分区
10+
- 引入语言分层:`scripts/pwsh`, `scripts/python`, `scripts/node-tsx`
11+
- 引入领域分层:`media`, `filesystem`, `network`, `devops`, `misc`
12+
- 制定命名与元数据规范(PowerShell Verb-Noun;Python PEP 723;Node tsx 单文件规范)
13+
- 设计统一运行入口与发现机制(可选 `bin/run.ps1` + `scripts/registry.json`)
14+
- [ ] **Step 3: Verification (验证)**
15+
- 路径迁移后进行冒烟测试:常用脚本执行与参数验证
16+
- 更新文档链接并在 `docs` 增加目录说明与使用示例
17+
18+
---
19+
20+
## 设计目标
21+
- 提升可发现性:按语言与业务领域分类,快速定位目标脚本
22+
- 明确边界:单文件脚本与多文件工程分区,避免耦合与依赖污染
23+
- 统一规范:命名、元数据、入口一致化,便于跨平台与自动化运行
24+
- 可扩展性:未来新增 Deno/Golang/其他语言时无需重构,只需增加语言层
25+
26+
## 目录总览(重构后建议)
27+
```
28+
root/
29+
├── scripts/ # 单文件脚本(跨平台)
30+
│ ├── pwsh/
31+
│ │ ├── media/
32+
│ │ ├── filesystem/
33+
│ │ ├── network/
34+
│ │ ├── devops/
35+
│ │ └── misc/
36+
│ ├── python/
37+
│ │ ├── media/
38+
│ │ ├── filesystem/
39+
│ │ ├── network/
40+
│ │ ├── devops/
41+
│ │ └── misc/
42+
│ └── node-tsx/
43+
│ ├── media/
44+
│ ├── filesystem/
45+
│ ├── network/
46+
│ ├── devops/
47+
│ └── misc/
48+
├── packages/ # 多文件工程/CLI 项目(pnpm workspace)
49+
│ └── json-diff-tool/
50+
├── bin/ # 统一入口与封装(可选)
51+
│ └── run.ps1
52+
├── config/ # 保持现状
53+
├── docs/ # 保持现状(新增脚本索引与使用指南)
54+
├── profile/ # 保持现状
55+
├── ai/, openspec/, templates/ 等保留
56+
└── pnpm-workspace.yaml # 仅包含 packages/*
57+
```
58+
59+
## 分类原则
60+
- 语言优先、领域次之:先按语言隔离运行时与生态,再按业务领域分类
61+
- 单文件 vs 多文件:单文件脚本进入 `scripts/*/*`,工程化项目进入 `packages/*`
62+
- 只读工具与有状态工具:有状态(服务、守护进程)建议工程化为 `packages`,便于测试与发布
63+
64+
## 命名与元数据
65+
- PowerShell
66+
- 文件名:`verb-noun.ps1`(如 `rename-legal.ps1`, `video-to-audio.ps1`)
67+
- 代码内:遵循 Verb-Noun 函数命名;使用 `[CmdletBinding()]` 与 `param()`;返回 `PSCustomObject`
68+
- Python(uv/PEP 723)
69+
- 单文件脚本顶部嵌入 `PEP 723` 元数据,声明依赖与入口;避免生成 `venv` 与散落的 `requirements.txt`
70+
- 文件名:`kebab-case.py`(如 `image-compress.py`)
71+
- Node + tsx
72+
- 单文件运行,尽量使用 `tsx` + ESM;避免在 `scripts` 下创建 `package.json`
73+
- 若需依赖,升级为 `packages/*`(工程化)
74+
75+
## 统一运行入口(可选增强)
76+
- `bin/run.ps1`:提供统一调用体验,如:
77+
- `bin/run.ps1 media/video-to-audio --lang pwsh -- args...`
78+
- 自动从 `scripts/registry.json` 解析别名到具体路径
79+
- 优点:
80+
- 迁移后别名不变,用户与 CI 只记得逻辑名
81+
- 可扩展到跨语言:自动选择合适的解释器(`pwsh`, `python -m uv`, `tsx`)
82+
83+
## 文档与可发现性
84+
- `docs/scripts-index.md`:自动生成/维护脚本索引(名称、语言、领域、简介、示例)
85+
- 在 `docs/跨平台单文件脚本最佳实践.md` 补充本仓库约定(PEP 723、tsx 单文件、PowerShell 规范)
86+
- 每个领域目录下建议保留 `README.md` 说明脚本用途与常见参数
87+
88+
## 迁移建议(示例映射)
89+
- 媒体类:
90+
- `VideoToAudio.ps1` → `scripts/pwsh/media/video-to-audio.ps1`
91+
- `concatflv.ps1` / `ffmpegPreset.ps1` / `pngCompress.ps1` / `webpCompress.ps1` → `scripts/pwsh/media/*`
92+
- 文件系统类:
93+
- `smallFileCleaner.ps1` → `scripts/pwsh/filesystem/small-file-cleaner.ps1`
94+
- `renameLegal.ps1` / `folderSize.ps1` → `scripts/pwsh/filesystem/*`
95+
- 网络/下载类:
96+
- `downGithub.ps1` / `startaria2c.ps1` / `downWith.ps1` → `scripts/pwsh/network/*`
97+
- DevOps/工具链:
98+
- `Setup-VSCodeSSH.ps1` / `Setup-SshNoPasswd.ps1` → `scripts/pwsh/devops/*`
99+
- 多文件 CLI:
100+
- `clis/json-diff-tool` → `packages/json-diff-tool`(保留工程结构与测试)
101+
102+
## 验证与风险控制
103+
- 冒烟测试:挑选高频脚本执行回归
104+
- 路径兼容:为迁移的脚本提供短期 `shim`(存根),在原路径内转发到新路径并打印 deprecation 提示
105+
- 文档更新:批量更新 `README` 与示例脚本引用;在 `docs/scripts-index.md` 提供跳转
106+
- 回滚策略:保留迁移前分支;如发现问题可快速切换
107+
108+
## 后续扩展
109+
- 未来新增 `scripts/deno` 或 `scripts/golang` 时,沿用领域分层与入口规范
110+
- 若需要分发:Deno 可 `deno compile`;PowerShell 使用 PS Gallery;Node/Golang 走 `packages` 工程化发布
111+
112+
—— 若确认该方案,我将:
113+
1) 生成 `scripts/` 与子目录结构;2) 提供 `registry.json` 与 `bin/run.ps1` 初始模板;3) 完成一批代表性脚本迁移与 shim;4) 更新 `docs` 与示例用法。

0 commit comments

Comments
 (0)