메인 콘텐츠로 건너뛰기

0.13.0

Fastify 5

Sonamu 0.13부터 Fastify 5와 그에 맞는 @fastify/* 플러그인 메이저 버전을 사용합니다. Fastify와 플러그인은 sonamu의 의존성이므로 sonamu를 올리고 pnpm install을 다시 실행하면 함께 갱신됩니다. 프로젝트가 fastify를 직접 의존성으로 선언했다면 ^5로 맞추거나 제거하세요. @api, @websocket, @stream, 인증, 파일 업로드 등 Sonamu가 제공하는 기능은 코드를 바꾸지 않아도 그대로 동작합니다. 다음 세 곳을 직접 사용했다면 확인이 필요합니다.
1

server.plugins.ws.errorHandler

@fastify/websocket 11부터 두 번째 인자가 { socket } 래퍼가 아닌 ws.WebSocket 인스턴스입니다. connection.socket을 socket으로 바꾸세요.
2

server.plugins.custom, lifecycle.onError

Fastify 4 전용 API(request.routerPath, reply.context, reply.getResponseTime(), reply.redirect(code, url) 인자 순서 등)는 제거되거나 바뀌었습니다. Fastify 5 마이그레이션 가이드를 참고하세요. server.fastify 옵션에는 더 이상 logger를 넣을 수 없습니다. Sonamu가 loggerInstance로 로거를 설정합니다.
3

request.hostname

Fastify 5의 request.hostname에는 포트가 포함되지 않습니다. 포트가 필요하면 request.port 또는 request.headers.host를 사용하세요.

peer 의존성 변경

0.13.0에서 범위가 바뀐 sonamu의 peer 의존성입니다. 프로젝트의 pnpm-workspace.yaml catalog를 같은 범위로 맞추세요. fastify는 위 Fastify 5 절을 참고하세요. 나머지 peer 의존성 범위는 그대로입니다. 템플릿 프로젝트의 개발 의존성도 함께 올랐습니다. vitest 5(@vitest/coverage-v8 포함)는 clearMocks가 기본으로 활성화되어, 앞선 테스트의 mock 호출 기록에 의존하던 테스트는 실패합니다. vite 8.3, dotenv 18은 확인할 내용이 없습니다.

create-sonamu로 생성한 프로젝트

생성된 프로젝트의 pnpm-workspace.yaml은 seroval을 1.4.2로 고정합니다. 이 버전에는 역직렬화 취약점이 있으므로 다음과 같이 바꾸세요.
pnpm-workspace.yaml
web/tsconfig.node.json은 vite.config.ts를 검사하는데, Vite 플러그인의 타입 선언이 설치되지 않은 선택적 번들러(webpack, rollup 등)를 참조해 sonamu build의 web 타입 검사가 실패합니다. tsconfig.app.json과 같이 skipLibCheck를 추가하세요.
web/tsconfig.node.json
TanStack Router를 1.170.45 이상으로 올리는 것도 권장합니다. 1.170 generator는 routeTree.gen.ts를 새 형식으로 다시 쓰므로 첫 sonamu dev 실행 뒤 그 변경을 커밋하면 됩니다. 새로 생성하는 프로젝트에는 두 변경이 이미 적용되어 있습니다.