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
1.170.45 이상으로 올리는 것도 권장합니다. 1.170 generator는 routeTree.gen.ts를
새 형식으로 다시 쓰므로 첫 sonamu dev 실행 뒤 그 변경을 커밋하면 됩니다.
새로 생성하는 프로젝트에는 두 변경이 이미 적용되어 있습니다.