릴리스 채널
Stable, canary, LTS dist-tag, 버전 동기화, 출처 증명, 릴리스 발행.
Text.js는 npm dist-tag 3개로 배포해요. 모든 패키지(@textjs/app, @textjs/react, @textjs/core, @textjs/font, @textjs/opencode, create-text-app, eslint-plugin-textjs)의 버전을 함께 올리므로, 버전 번호 하나가 프레임워크 전체를 나타내요.
채널
| 채널 | dist-tag | 버전 | 설치 |
|---|---|---|---|
| 안정 | latest | 1.0.x | bun add @textjs/app |
| 카나리 | canary | 1.0.x-canary.N | bun add @textjs/app@canary |
| LTS | lts, v1-lts | 2.0.0 출시 후 배포 | bun add @textjs/app@lts |
프로덕션에서는 안정 버전을 사용하세요. 수정 사항과 기능이 dev에 반영된 날 바로 사용해 보려면 카나리 버전을 사용하세요. LTS 계열이 생기면, 1년에 한 번 업그레이드하는 경우 LTS를 사용하세요.
bun create text-app@canary my-console안정 버전
안정 릴리스는 유의적 버전을 따라요: 패치 버전은 버그를 수정하고, 마이너 버전은 하위 호환 기능을 추가하며, 메이저 버전은 사용 중단 예고 기간 후 API 호환성을 깨뜨릴 수 있어요. 안정 릴리스는 전체 테스트 모음을 통과한 카나리 버전에서 승격되며, npm 출처 증명과 함께 배포돼요.
카나리
공식 저장소의 dev에 푸시할 때마다 타입 검사와 테스트를 거쳐 -canary.N 접미사가 붙은 다음 패치 버전으로 배포돼요:
latest | dev 푸시 | 배포 버전 |
|---|---|---|
1.0.0 | 첫 번째 | 1.0.1-canary.0 |
1.0.0 | 두 번째 | 1.0.1-canary.1 |
1.0.1 | 다음 | 1.0.2-canary.0 |
N은 npm에 이미 배포된 가장 높은 카나리 번호에서 이어지므로 번호가 반복되지 않아요. 카나리 버전은 저장소에 커밋하지 않아요. 릴리스를 건너뛰려면 커밋 메시지에 [skip canary]를 추가하세요.
카나리는 모든 풀 리퀘스트가 병합되는 브랜치인 dev의 빌드예요. 미출시 API가 사전 안내 없이 변경되거나 제거될 수 있어요. 카나리 버전에 의존한다면 정확한 버전을 고정하세요.
출처 증명
릴리스는 GitHub Actions에서 npm publish --provenance로 배포하며, 각 타르볼을 빌드한 정확한 커밋과 워크플로에 연결해요. 패키지를 검증하려면 다음 명령을 실행하세요:
npm audit signatures릴리스 만들기
유지 관리자는 릴리스 스크립트로 모든 워크스페이스 패키지의 버전을 함께 올려요:
bun run release:version minor # 1.0.0 → 1.1.0 (also: patch, major, canary, stable, x.y.z)bun run release:publish --tag latest --provenancerelease:version은 각 package.json과 해당 버전을 반영하는 상수(VERSION, 리컨실러의 rendererVersion)를 다시 쓰고, 패키지 간 버전이 달라지면 실행을 거부하며, --dry-run은 실행 계획을 출력해요. release:publish는 빌드하고, 패키징하고(workspace:* 해석), publishConfig를 적용하고, 프리릴리스를 latest에 게시하거나 안정 버전을 canary에 게시하는 것을 거부하고, npm에 이미 있는 버전은 건너뛰어요.
각 릴리스 계열의 유지 관리 기간은 지원 정책을 참고하세요.