Skip to content

chore(node): migrate dev and CI runtime to Node 24 LTS - #676

Draft
MaxLee-dev wants to merge 4 commits into
mainfrom
chore/node-24-runtime
Draft

chore(node): migrate dev and CI runtime to Node 24 LTS#676
MaxLee-dev wants to merge 4 commits into
mainfrom
chore/node-24-runtime

Conversation

@MaxLee-dev

@MaxLee-dev MaxLee-dev commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Related Issues

Description of Changes

Node.js 20은 2026년 4월 30일로 지원이 끝났다. .nvmrc는 여전히 20.20.2를 가리키는데, CI는 이미 24.18.0에서 모든 잡을 통과하고 있었다. 로컬과 CI가 다른 노드로 돌고 있었다.

.github/composite/install/action.ymlnode-version-file: 'package.json'으로 루트 engines.node를 읽은 게 원인이다. 값이 ">=20.20.2" 범위라 setup-node가 조건을 만족하는 최신 버전을 집었고, 커밋 하나 없이 CI 노드가 24로 올라갔다. 같은 이유로 Node 26이 LTS가 되면 또 조용히 넘어간다.

이 PR은 실행 버전을 .nvmrc 한 곳에 고정하고 CI가 그 파일을 읽게 한다.

버전 정책

대상 역할
.nvmrc 24.18.0 로컬과 CI의 정확한 실행 버전
루트 engines.node >=24.18.0 <25 지원하지 않는 개발 런타임 차단
ts-api-extractor engines.node >=24.18.0 <25 내부 CLI 런타임 계약
codemod engines.node >=24.18.0 <25 배포 CLI 소비자 런타임 계약
빌드 타깃 node24 Node 24 문법·API 기준 출력

정확한 실행 버전과 허용 범위를 분리했다. .nvmrc는 개발자와 CI가 같은 패치 버전을 쓰게 하고, engines.node는 같은 메이저의 이후 보안 패치는 허용하되 Node 25 이상은 거부한다.

변경 파일

파일 변경
.nvmrc 20.20.224.18.0
루트 package.json engines.node, @types/node^24.13.3
scripts/ts-api-extractor/package.json engines.node, @types/node
packages/codemod/package.json engines.node, @types/node
apps/website/package.json @types/node
.github/composite/install/action.yml node-version-file: package.json.nvmrc
.github/workflows/release.yml promote-docssetup-node@v4 추가
scripts/ts-api-extractor/tsup.config.ts node20node24, 낡은 >=20.19 주석 제거
packages/codemod/tsup.config.ts 두 빌드에 target: 'node24' 명시
.gemini/styleguide.md Node 기준 갱신
pnpm-lock.yaml 재생성

promote-docs 예외

release.ymlpromote-docs 잡은 checkout을 하지 않아 .nvmrc를 읽을 수 없다. Vercel CLI만 실행하는 잡이라 메이저 버전('24')으로 고정하고 그 이유를 주석에 남겼다. 실행 버전이 두 번 나타나는 유일한 지점이다.

codemod 소비자 계약

@vapor-ui/codemodengines>=14.21.3에서 >=24.18.0 <25로 바뀐다. 기존 값은 이미 사실과 달랐다. 의존성 meow@14globby@15가 Node 20 이상을 요구해서, Node 14에서는 설치조차 되지 않는다.

changeset은 넣지 않았다. 이 변경은 다음 codemod 릴리스에 함께 나간다.

검증 — v24.18.0 로컬 실행

명령 결과
node -v v24.18.0
pnpm install OK (engine 오류 없음)
pnpm install --frozen-lockfile OK
pnpm build 11/11
pnpm lint 12/12
pnpm typecheck 17/17
pnpm test 12/12 (codemod 168 tests)
pnpm --filter @vapor-ui/ts-api-extractor test:run 198 passed, 1 skipped

pnpm format:check는 exit 1이지만, 실패한 10개 파일은 모두 gitignore된 로컬 파일이다(.venv/ 6개, .claude/settings.local.json, docs/agents/component-criteria.md, 생성물 apps/website/next-env.d.ts, 설계 문서). 이 PR이 건드린 11개 파일은 prettier를 통과한다.

Screenshots

Checklist

  • The PR title follows the Conventional Commits convention.
  • I have added tests for my changes. — 런타임 선언과 CI 설정만 바뀌어서 테스트를 붙일 로직이 없다.
  • I have updated the Storybook or relevant documentation. — .gemini/styleguide.md Node 기준 갱신. CONTRIBUTING.md/CONTRIBUTING.ko.md는 이미 .nvmrc를 참조하므로 수정 불필요.
  • I have added a changeset for this change. — 위 사유로 넣지 않음.
  • I have performed a self-code review.
  • I have followed the project's coding conventions and component patterns.

Summary by CodeRabbit

  • 개선 사항
    • 로컬 개발 환경과 CI의 Node.js 실행 버전을 24.18.0으로 통일했습니다.
    • 문서 배포 작업에서도 Node.js 24 환경을 명시적으로 사용합니다.
    • 관련 도구의 빌드 대상과 타입 정의를 Node.js 24 기준으로 업데이트했습니다.
    • 지원 Node.js 버전이 24.18.0 이상, 25 미만으로 조정되었습니다.

@MaxLee-dev
MaxLee-dev requested a review from noahchoii as a code owner August 13, 2026 07:42
@changeset-bot

changeset-bot Bot commented Aug 13, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 0f25f82

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercel Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
vapor-ui Ready Ready Preview Aug 13, 2026 7:51am

Request Review

@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: ecb37265-5576-4060-8a8a-3997f8faa17a

📥 Commits

Reviewing files that changed from the base of the PR and between 715c6c9 and deabcea.

⛔ Files ignored due to path filters (2)
  • .gemini/styleguide.md is excluded by !**/.gemini/**
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml, !pnpm-lock.yaml
📒 Files selected for processing (10)
  • .github/composite/install/action.yml
  • .github/workflows/release.yml
  • .nvmrc
  • apps/website/package.json
  • docs/superpowers/specs/2026-08-13-node-24-runtime-upgrade-design.md
  • package.json
  • packages/codemod/package.json
  • packages/codemod/tsup.config.ts
  • scripts/ts-api-extractor/package.json
  • scripts/ts-api-extractor/tsup.config.ts

📝 Walkthrough

Walkthrough

Node.js 실행 버전을 24.18.0으로 통일했습니다. CI와 문서 배포 작업이 .nvmrc 또는 명시된 Node.js 24를 사용합니다. 루트 및 대상 패키지의 엔진 범위, 타입 정의와 빌드 대상도 갱신했습니다.

Changes

Node.js 24 런타임 전환

Layer / File(s) Summary
런타임 버전과 CI 실행 환경
.nvmrc, .github/composite/install/action.yml, .github/workflows/release.yml
.nvmrc를 Node.js 24.18.0으로 변경했습니다. 공통 설치 액션은 .nvmrc를 사용합니다. 문서 배포 작업은 Node.js 24를 직접 설치합니다.
패키지 계약과 빌드 대상
package.json, apps/website/package.json, packages/codemod/*, scripts/ts-api-extractor/*
Node.js 엔진 범위를 >=24.18.0 <25로 변경했습니다. @types/node를 24 계열로 갱신했습니다. codemodts-api-extractor의 빌드 대상을 node24로 변경했습니다.
전환 설계와 검증 기준
docs/superpowers/specs/2026-08-13-node-24-runtime-upgrade-design.md
Node.js 24 전환 범위, CI 및 로컬 검증 절차, 빌드 정책과 완료 조건을 문서화했습니다.

Estimated code review effort: 2 (Simple) | ~10 minutes

Mergeability Score: ⚪ Minimal · up to deabc

This PR standardizes local and CI execution on Node 24 and updates the related runtime contracts and build targets. The change is merge-ready after normal checks and review, with no actionable merge-blocking risk remaining.

Possibly related issues

  • goorm-dev/vapor-ui#415 — Node.js 24 런타임과 @types/node, 엔진 설정을 갱신하는 목표가 일치합니다.

Possibly related PRs

  • goorm-dev/vapor-ui#511.nvmrc와 패키지 엔진 설정을 변경한 점에서 코드 수준의 연관성이 있습니다.
🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 개발 환경과 CI 실행 환경을 Node.js 24 LTS로 마이그레이션하는 PR의 주요 변경 사항을 정확하고 간결하게 설명합니다.
✨ Finishing Touches 💡 1
⚔️ Resolve merge conflicts 💡
  • Resolve merge conflict in branch chore/node-24-runtime
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/node-24-runtime

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@MaxLee-dev MaxLee-dev closed this Aug 13, 2026
@MaxLee-dev MaxLee-dev reopened this Aug 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant