项目结构检查器

发布: (2025年12月18日 GMT+8 02:49)
4 min read
原文: Dev.to

Source: Dev.to

它的功能

PSX 能自动检测项目类型(Node、Go 等),并运行一套规则以确保仓库拥有必需的文件。如果缺少某些文件,你可以运行 psx fix,它会创建合理的默认文件。规则可通过一个简单的 YAML 文件进行配置,检查会并行执行以提升速度。

特性

  • 自动检测项目类型并生成基础脚手架
  • 自动修复模式,可创建缺失的文件和文件夹
  • 支持多种语言(Node.js、Go、通用项目)
  • 通过简单的 YAML 文件配置规则

安装

快速安装

Linux / macOS

curl -sSL https://raw.githubusercontent.com/m-mdy-m/psx/main/scripts/install.sh | bash

Windows (PowerShell)

Invoke-WebRequest -Uri "https://raw.githubusercontent.com/m-mdy-m/psx/main/scripts/install.ps1" -OutFile install.ps1; .\install.ps1 github

下载二进制文件

在 GitHub 上提供了预编译的发行版,支持 Linux(amd64、arm64)、macOS(amd64、arm64)和 Windows(amd64)。请查看仓库的 Releases 页面。

从源码构建

git clone https://github.com/m-mdy-m/psx
cd psx
make build
sudo make install

Docker

docker pull bitsgenix/psx:latest
docker run --rm -v $(pwd):/project psx:latest check

快速开始

cd my-project
psx check

如果 PSX 发现缺失或不完整的项目项,你可以自动修复:

psx fix

交互式确认每一次更改:

psx fix --interactive

示例配置 (psx.yml)

将此文件放在仓库根目录。若 type 留空,PSX 将自动检测项目类型。

version: 1
project:
  type: "go"
rules:
  readme: error
  license: warning
  gitignore: warning
  changelog: info

自动修复的工作原理

psx fix 读取你的规则,判断缺失的内容,并为 README、.gitignore、LICENSE 等文件创建合理的默认内容。LICENSE 文件使用标准模板;README 为最小化格式(包含名称、简短描述、安装/运行提示)。--interactive 标志会在应用每项更改前询问确认。

开发说明

PSX 使用 Go 编写,构建时需要 Go 1.25+。代码库采用模块化设计,便于扩展检测器和规则。目前仓库未包含测试(v1 版本的有意设计);欢迎贡献测试或 lint 规则。

我为何创建它

创建新项目时,总是要重复做同样的前几分钟工作——编写 README、LICENSE、.gitignore、changelog 以及其他模板文件。PSX 提供了一个小工具来强制执行合理的基线,让你可以更快开始编码,并保持仓库的一致性。

未来改进(v1 未包含)

  • 插件系统用于自定义规则 – 允许用户添加/共享自定义规则集
  • 多项目扫描 – 一次性扫描多个仓库
  • Git pre‑commit hook 集成 – 在提交前本地运行检查
  • 额外语言支持 – Python、Rust、Java 等
  • 改进代码结构和质量 – 重构模块、增加更多测试
  • 编辑器/CI 集成 – VS Code 插件、CI 检查
  • 可用性提升 – 更多模板、交互式流程

关于 v1 的说明

这是首个公开版本,可能包含 bug 或缺失功能。请尝试使用、提交问题并提供反馈。你的意见有助于让工具变得更好。

如果你想帮助

给仓库加星并考虑贡献。有价值的贡献包括添加测试、编写 linter、创建新语言检测器、改进模板或提交小的修复。打开 issue 或 pull request,团队会进行审阅。

链接与支持

  • 仓库:
  • Issues:
  • Releases:
Back to Blog

相关文章

阅读更多 »

基于文本编辑器的提醒

摘要:在 PC 上平衡提醒很棘手。 ‑ 你希望通过 CLI 快速操作,但又不希望太吵。 ‑ 打开一个已写好提醒的文本文件。此……