Skip to content

v0.7.0 — Stage B 런타임 패키지 모델

Choose a tag to compare

@sol5288 sol5288 released this 17 Jul 02:12
· 2794 commits to main since this release

설치 모델이 바뀝니다 — 기존 사용자는 조치가 필요합니다. 실행 코드와 런타임 의존성을 대상 프로젝트에 복사·주입하지 않고, commitgate 패키지에서 실행합니다. 프로젝트에는 거버넌스·감사 데이터만 남습니다.

npm 배포 이력: 0.5.0·0.6.0은 npm에 배포되지 않았습니다. 0.4.0 다음 릴리스가 0.7.0이며, 아래 0.5.0·0.6.0 항목의 변경도 전부 0.7.0에 포함됩니다.

⚠️ Breaking

  • 설치가 2단계가 됩니다. npx commitgate 단독 실행으로는 더 이상 설치되지 않습니다.

    npm install -D commitgate    # 1) 런타임이 node_modules/commitgate 에 들어옵니다
    npx commitgate init          # 2) 설정·계약·스키마와 req:* 스크립트를 깝니다

    init은 대상 package.jsondevDependencies.commitgate 선언이 없으면 중단합니다 — req:*가 가리킬 런타임이 없기 때문입니다. 선언의 존재만 확인하고 값 형태는 검증하지 않습니다(file:·link:·workspace:·git URL 전부 정당한 설치 형태입니다).

  • scripts/req/**를 복사하지 않습니다. 실행 코드는 node_modules/commitgate에만 있습니다.

  • tsx·ajv·cross-spawn을 대상 package.json에 주입하지 않습니다. 이들은 commitgate 패키지의 runtime dependency로 전이 설치됩니다.

  • req:* 스크립트 값이 commitgate <verb>가 됩니다(예: req:newcommitgate req:new). npm run req:new -- <slug> UX와 인자 전달은 그대로입니다.

기존 설치본(0.6.0 이하)에서 옮겨오기

기존 프로젝트에는 scripts/req/가 복사돼 있고 req:*tsx scripts/req/*.ts를 가리킵니다. init은 이 상태를 감지하면 조용히 섞이지 않도록 중단하고 migrate를 안내합니다.

npm install -D commitgate
npx commitgate migrate         # 계획만 출력 — 아무것도 쓰지 않습니다
npx commitgate migrate --apply # package.json 의 req:* 만 전환
  • 아무것도 삭제하지 않습니다. scripts/req/·스키마·persona·설정·진입점·workflow/REQ-* 증거를 전부 그대로 둡니다. 남은 scripts/req/는 더 이상 실행되지 않으니, 정리하려면 npx commitgate uninstall 계획을 먼저 확인하세요.
  • 직접 고친 스크립트는 덮어쓰지 않습니다. 값이 정확히 기존 주입값일 때만 전환하고, 한 글자라도 다르면 사용자 값으로 보아 보존한 뒤 수동 조치를 안내합니다.
  • 커밋하지 않습니다. package.json 한 파일만 쓰고, 검토는 사용자 몫입니다.

추가

  • commitgate migrate — 위 비파괴 전환 명령. 기본 dry-run.
  • req:doctor D19 — 설치 모드 진단. req:* 값의 형태만으로 예전(vendored)/현재(런타임 패키지)/혼합/없음/사용자정의를 분류합니다. 혼합일 때만 WARN하며 FAIL하지 않습니다 — 예전 설치 형태는 결함이 아니라 지원되는 상태이고, req:commit이 doctor를 하드 게이트로 실행하므로 FAIL로 두면 정당한 프로젝트의 커밋이 막힙니다. manifest·lockfile·node_modules·버전은 검증하지 않습니다.
  • verb dispatchcommitgate <verb>가 패키지 내부 모듈로 라우팅됩니다. npx commitgate --dry-run 같은 기존 옵션 형태는 그대로 init으로 갑니다(하위호환).
  • uninstall에 런타임 제거 안내 추가npm uninstall -D commitgate. 이 명령은 여전히 읽기 전용이며 안내를 문자열로 출력만 합니다(npm을 실행하지 않습니다).

지원 범위

  • npm — 완전 지원. 매 릴리스 packed tarball smoke로 검증합니다.
  • pnpm·yarn(node_modules linker) — 지원. 표준 node_modules/.bin/commitgate 해소를 씁니다.
  • Yarn PnP이번 릴리스 미지원(검증하지 않았습니다). nodeLinker: node-modules를 쓰세요.
  • workspace/monorepo — 워크스페이스 root 설치를 지원합니다. 하위 패키지 독립 설치는 미지원.
  • 런타임 버전은 lockfile이 고정하므로 package-lock.json(pnpm/yarn은 각 lockfile)을 커밋하세요.

알려진 한계

  • 관리 자산(스키마·persona)과 런타임 패키지의 버전 skew를 자동으로 감지하지 못합니다. npm update commitgate는 런타임만 올리고 자산은 그대로 둡니다. D19는 스크립트 형태만 보므로 이 축을 잡지 못합니다. 자산 업그레이드·3-way merge는 이번 범위가 아닙니다.

설치

npm install -D commitgate
npx commitgate init

기존 설치본(0.6.0 이하)에서 옮겨오기

npm install -D commitgate
npx commitgate migrate         # 계획만 — 아무것도 쓰지 않습니다
npx commitgate migrate --apply

전체 변경 이력: CHANGELOG.md