|
| 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