PSX:项目结构检查器
Source: Dev.to
Why PSX?
- 厌倦了在新项目的第一小时里创建文件夹、配置文件和样板代码吗?
- 克隆一个仓库后发现一半的必需文件缺失?
- 为每个项目重复相同的复制‑粘贴步骤(README、
.gitignore、CI 模板等)?
PSX 自动化完成所有这些工作。
PSX 检查内容
| 类别 | 项目 |
|---|---|
| 必需文件 | README.md, LICENSE, .gitignore, CHANGELOG.md |
| 文件夹结构 | src/, tests/, docs/, cmd/, internal/, pkg/(取决于项目类型) |
| 文档 | CONTRIBUTING.md, SECURITY.md, API 文档, ADRs |
| CI / DevOps 基础 | Docker 文件, docker‑compose.yml, 最小化 CI/工作流模板 |
| 质量工具 | .editorconfig, Go linter 集成等 |
最棒的部分是? PSX 不仅仅报告问题——它还能 修复它们。
快速安装
Linux / macOS
curl -sSL https://raw.githubusercontent.com/m-mdy-m/psx/main/scripts/install.sh | bash
Windows (PowerShell)
irm https://raw.githubusercontent.com/m-mdy-m/psx/main/scripts/install.ps1 | iex
完整的分步指南: docs/INSTALLATION.md
二进制文件: 请参阅 GitHub 上的 Releases 页面。
支持的项目类型
PSX 目前专注于 Go 和 Node.js 项目。
您必须通过在仓库根目录添加一个小的配置文件来告诉 PSX 您正在使用的项目类型:
# psx.yml
project:
type: "go" # or "nodejs"
如果缺少 project.type,PSX 将提示您创建它。
基本用法
# 移动到你的项目目录
cd my-project
# 验证布局
psx check
示例输出
Detected: go (based on project.type in psx.yml)
ERRORS (2)
✗ README_REQUIRED
README.md file not found in project root
✗ LICENSE_REQUIRED
No LICENSE file found
Summary: 2 errors, 0 warnings
Status: FAILED ✗
修复问题
# 交互模式(在创建每个文件前询问)
psx fix
# 非交互模式 – 自动创建所有文件
psx fix --all
配置详情
Basic psx.yml
version: 1
project:
type: "nodejs"
rules:
readme: error # Must have
license: warning # Should have
changelog: info # Nice to have
ignore:
- node_modules/
- dist/
- rules – 为每个检查设置严重程度(
error、warning、info)。 - ignore – PSX 应该跳过的路径。
Custom Files & Folders
custom:
files:
- path: ".env.example"
content: |
NODE_ENV=development
PORT=3000
folders:
- path: "src/api"
structure:
controllers: {}
middlewares: {}
routes: {}
查看 examples/psx.examples.yml 以获取更高级的配置。
模板与资源
PSX 附带语言特定的模板:
- README 骨架
- 多种 LICENSE 类型
.gitignore代码片段- Dockerfile 与
docker‑compose.yml - ADR / 文档模板
所有模板都位于嵌入的 resources 目录中,可通过您自己的配置进行覆盖或扩展。
CI 集成
PSX 可以输出机器友好的 JSON,完美用于流水线:
- name: Validate Structure
run: |
psx check --output json
在 CI 中使用 --fail-on warning(或 error)来强制执行更严格的规则。
内部(供开发者使用)
| 组件 | 位置 | 目的 |
|---|---|---|
| 配置加载器 | internal/config/ | 读取并验证 psx.yml |
| 规则引擎 | internal/rules/ | 并行执行检查 |
| 资源 | internal/resources/ | 保存所有嵌入的模板 |
| 修复器 | internal/rules/fixer.go | 创建缺失的文件/文件夹 |
| 报告器 | internal/reporter/ | 格式化输出(表格或 JSON) |
代码库最近为简化进行了重构:统一的检查/修复流程、更清晰的资源分离,以及最小化的命令入口(check 与 fix)。在 internal/ 中浏览其余内部实现。
范围与限制
- 显式项目类型 – PSX 从不猜测;你需要设置
project.type。 - 专注模板 – 仅提供最小、可维护的 CI/质量文件。复杂的流水线应单独管理。
- 没有插件系统 或多项目扫描(可能以后会添加)。
贡献
PSX 是开源的(MIT 许可证)。
- Bugs(错误): 提交 issue。
- Feature requests(功能请求): 发起讨论。
- Ideas & improvements(想法与改进): 欢迎提交 pull request。
扩展 PSX
- 在
rules.yml中或直接在internal/rules中添加新规则。 - 将额外的模板放入
internal/resources。 - 重新构建二进制文件。
许可证
MIT © 2025 — m‑mdy‑m(PSX 作者)
使用 Go 1.25 构建 — 单个静态二进制文件,无运行时依赖,随处可用。
一个原则
不要让我去思考枯燥的事情。
当我开始一个项目时,我想写代码,而不是花 30 分钟设置文件夹和配置文件。
当我克隆一个仓库时,我想知道它有合适的结构,而无需手动检查。
PSX 处理枯燥的部分,让你专注于有趣的部分。
安装
curl -sSL https://raw.githubusercontent.com/m-mdy-m/psx/main/scripts/install.sh | bash
检查项目
cd your-project
# 确保 psx.yml 包含 `project.type: "go"` 或 `"nodejs"`
psx check
修复问题
psx fix
定制
echo "version: 1" > psx.yml
# Add your rules...
您的想法
我很想听听您的意见:
- PSX 以聚焦、类型优先的设计,是否让项目设置对您更可预测、更有用?
- 您更倾向于更广泛的语言支持、插件系统,还是更丰富的 CI 模板?
在 GitHub 上发起讨论,或将建议和安全报告发送至 bitsgenix@gmail.com。
让我们一起构建真正能节省时间的东西!