런타임 고르고 버전 고정하기
요즘 쓸 만한 런타임은 Node.js(클래식), Deno, Bun 세 가지야. 대부분 프로덕션 앱은 아직 Node.js를 쓴다. 패키지 매니저는 npm(기본), pnpm(빠르고 content-addressed 방식), yarn(여전히 쓰임), bun(엄청 빠르고 런타임도 겸함)이 있다.
기본 Node CI 구성은 이렇게 흘러가:
- 저장소 체크아웃.
actions/setup-node@v4로 버전 고정하고 패키지 매니저 캐시 설정.npm ci(또는pnpm install --frozen-lockfile,yarn install --immutable,bun install)로 lockfile 기반 깔끔하고 재현 가능한 설치.- 린트:
eslint나biome. - 타입 검사:
tsc --noEmit. - 테스트:
vitest run,jest, 또는node --test.
자주 겪는 함정
- CI에서
npm install을 쓰면 안 돼. lockfile을 몰래 업데이트할 수 있거든. 무조건npm ci를 써. actions/setup-node의 기본 캐시 키는 lockfile 해시야. 모노리포에서 lockfile이 여러 개라면cache-dependency-path:를 명시해.- 매트릭스 셀마다
npm install을 따로 돌리지 마. 버전이 다르지 않으면 매트릭스 간에 설치를 공유해.