PSX: 프로젝트 구조 검사기

발행: (2025년 12월 20일 오후 04:50 GMT+9)
8 min read
원문: Dev.to

Source: Dev.to

죄송합니다만, 현재 저는 외부 웹사이트의 실제 내용을 직접 가져올 수 없습니다. 해당 글의 텍스트를 복사해서 제공해 주시면, 요청하신 대로 한국어로 번역해 드리겠습니다.

왜 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 린터 통합 등

그리고 가장 좋은 점은? 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는 현재 GoNode.js 프로젝트에 집중하고 있습니다.
작업 중인 유형을 알려주려면 저장소 루트에 작은 설정 파일을 추가해야 합니다:

# psx.yml
project:
  type: "go"      # or "nodejs"

project.type이 없으면, PSX가 생성하도록 안내합니다.

기본 사용법

# Move to your project directory
cd my-project

# Validate the layout
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 ✗

문제 해결

# Interactive mode (asks before creating each file)
psx fix

# Non‑interactive – create everything automatically
psx fix --all

구성 세부 사항

기본 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:
    - 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)를 사용하세요.

Internals (for developers)

ComponentLocationPurpose
Config Loaderinternal/config/psx.yml를 읽고 검증합니다
Rules Engineinternal/rules/체크를 병렬로 실행합니다
Resourcesinternal/resources/모든 내장 템플릿을 보관합니다
Fixerinternal/rules/fixer.go누락된 파일/폴더를 생성합니다
Reporterinternal/reporter/출력을 포맷합니다 (표 또는 JSON)

코드베이스는 최근 단순성을 위해 리팩터링되었습니다: 통합된 검사기/수정기 흐름, 명확한 리소스 분리, 그리고 최소한의 명령 인터페이스(checkfix). 나머지 내부 구조는 internal/에서 확인하세요.

범위 및 제한 사항

  • Explicit project type – PSX는 추측하지 않으며, project.type을 설정합니다.
  • Focused templates – 최소한의 유지 관리 가능한 CI/품질 파일만 제공됩니다. 복잡한 파이프라인은 별도로 관리해야 합니다.
  • No plugin system 또는 다중 프로젝트 스캔(추후 추가될 수 있음).

기여

PSX는 오픈 소스(MIT 라이선스)입니다.

  • 버그: 이슈를 열어 주세요.
  • 기능 요청: 토론을 시작하세요.
  • 아이디어 및 개선: 풀 리퀘스트를 환영합니다.

PSX 확장

  1. rules.yml에 새 규칙을 추가하거나 internal/rules에 직접 추가합니다.
  2. internal/resources에 추가 템플릿을 넣습니다.
  3. 바이너리를 다시 빌드합니다.

라이선스

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 으로 이메일 보내 주세요.

실제로 시간을 절약하는 무언가를 함께 만들어 봅시다!

Back to Blog

관련 글

더 보기 »

프로젝트 구조 검사기

PSX는 프로젝트 유형(Node, Go 등)을 자동 감지하고, 저장소에 필수 파일이 있는지 확인하기 위해 일련의 규칙을 실행합니다. 누락된 것이 있으면…

RegExp vs String Manipulation in Go 언어

무엇이 문제인가요? ihttps://github.com/abanoubha/i에서, 제가 작성한 이 함수는 명령어의 placeholder x를 t가 제공한 package name으로 교체하도록 만든 도구입니다.