Astro 7.0 릴리스 노트 / 새로운 소식
Astro 7.0 릴리스 노트 / 새로운 소식
Astro 7.0은 대규모 사이트의 빌드 속도를 특히 목표로 하여 막대한 성능 향상과 개발자 경험에 초점을 맞추었습니다. 핵심 컴포넌트를 Rust로 재작성하고 Vite 8과 Rolldown 번들러를 통합함으로써 Astro 7은 빌드 시간이 15%에서 61%까지 단축됩니다.
빌드 성능 및 Rust 통합
Astro 7에서는 빌드 프로세스 중 가장 계산 비용이 많이 드는 부분을 네이티브 Rust 코드로 옮겨 빌드 시간이 크게 감소했습니다. MacBook Pro M4 Pro에서 수행한 벤치마크에 따르면 일부 사이트는 이제 두 배 이상 빠르게 빌드되며, Astro 문서 사이트는 빌드 시간이 114.54초에서 73.53초로 감소했습니다.
Rust 기반 .astro 컴파일러
.astro 컴포넌트 컴파일러가 완전히 Rust로 재작성되어 이전의 Go 기반 구현을 대체했습니다. 이 변화는 마크업 처리 방식에 여러 중요한 변화를 가져옵니다:
- HTML 교정 제거: 컴파일러가 이제 "유효한 HTML"이 되도록 마크업을 조용히 재작성하지 않으며, 자동으로 태그를 닫거나 요소 순서를 바꾸지 않습니다.
- JSX 스타일 엄격성: 닫히지 않은 태그와 종료되지 않은 속성은 이제 자동 교정되지 않고 오류를 발생시킵니다.
- 공백 처리: 요소 사이의 공백은 JSX 규칙에 따라 압축되며, 공백을 유지하려면 명시적인 표현식(예:
{' '})이 필요합니다.
Sätteri: Rust 기반 Markdown 및 MDX
Astro 7은 기본 Markdown 및 MDX 파이프라인을 Rust 기반 프로세서인 Sätteri로 교체합니다. 이는 종종 Markdown 중심 사이트의 주요 병목이었던 JavaScript 기반 unified 파이프라인(remark/rehype)의 오버헤드를 제거합니다. Sätteri는 이전에 플러그인이 필요했던 기능들을 내장 지원합니다:
- GFM(테이블, 각주, 작업 목록)
- 스마트 구두점 및 헤딩 ID
- 컨테이너 지시문 및 수학
- Frontmatter(YAML, TOML), 위첨자/아래첨자, 위키링크
특정 remark 또는 rehype 플러그인이 필요한 프로젝트의 경우, @astrojs/markdown-remark를 통해 unified 기반 파이프라인을 여전히 사용할 수 있습니다.
안정적인 큐 기반 렌더링
큐 기반 렌더링이 이제 안정화되어 기본 엔진이 되었으며, 표현식이 많은 페이지에서 약 2.4배 빠른 속도를 제공합니다. 이전의 재귀 렌더링 방식과 달리, 새로운 엔진은 큐/스택과 단일 루프를 사용해 노드를 렌더링하므로 메모리 사용량이 감소하고 실행 속도가 향상됩니다.
Vite 8 및 Rolldown
Astro 7은 Vite 8로 업그레이드되었으며, 여기에는 esbuild와 Rollup을 대체하는 Rust 기반 번들러인 Rolldown이 도입됩니다. Rolldown은 Rollup보다 10-30배 빠른 것으로 보고되었으며, Rollup 및 Vite 플러그인 API와의 호환성을 유지합니다. 대부분의 Astro 프로젝트는 esbuild와 rollupOptions 설정을 자동 변환하는 호환성 레이어 덕분에 설정 변경 없이도 빌드 속도가 빨라집니다.
고급 라우팅 및 요청 제어
Astro 7은 src/fetch.ts 진입점을 도입하여 개발자가 요청 파이프라인을 완전히 제어할 수 있게 합니다. 이를 통해 인증이나 API 프록시와 같은 사용자 정의 로직을 Astro 내부 라우팅에 도달하기 전에 구현할 수 있습니다.
이 API는 Hono와 호환되어 Hono 미들웨어를 사용해 요청 파이프라인을 구성할 수 있습니다. 예를 들어, 이제 개발자는 인증 미들웨어가 Astro Actions보다 먼저 실행되도록 하거나 페이지 렌더링에만 타이밍 미들웨어를 적용할 수 있습니다.
라우트 캐싱 및 CDN 통합
라우트 캐싱이 이제 안정화되어 Astro.cache 또는 구성 파일의 선언적 routeRules를 통해 온디맨드 렌더링 응답을 제어하는 플랫폼에 구애받지 않는 API를 제공합니다.
CDN 캐시 제공자
Astro 7은 Netlify, Vercel, Cloudflare용 실험적 CDN 제공자를 도입했습니다. 이러한 제공자는 캐시 지시자를 호스트의 엣지 네트워크에 직접 푸시하여 서버 함수를 호출하지 않고도 캐시 히트를 제공할 수 있습니다. 이들은 어댑터의 /cache 진입점(e.g., cacheNetlify(), cacheVercel(), cacheCloudflare())을 통해 구성됩니다.
AI 지원 개발 향상
Astro 7은 AI 코딩 에이전트가 개발 서버와 상호 작용하는 방식을 개선하기 위한 기능을 도입했습니다.
백그라운드 개발 서버
AI 에이전트가 장시간 실행되는 프로세스에서 멈추는 것을 방지하기 위해 Astro 7은 astro dev --background를 추가했습니다. 이 모드는 서버를 관리되는 백그라운드 프로세스로 시작하고 중복 인스턴스를 방지하기 위한 락 파일을 제공합니다. Astro는 AI 에이전트 내부에서 실행 중임을 자동으로 감지하고 기본적으로 이 모드를 활성화할 수 있습니다. 에이전트는 astro dev stop, astro dev status, astro dev logs 명령으로 서버를 관리하고 /_astro/status 엔드포인트를 통해 상태를 확인할 수 있습니다.
구조화된 JSON 로깅
JSON 로깅은 이제 astro dev --json 또는 logHandlers.json() 설정을 통해 사용할 수 있습니다. 이는 AI 에이전트와 프로덕션 로그 집계 서비스(예: Kibana, CloudWatch, Grafana/Loki)에 필수적인 기계 판독 가능한 로그를 제공하며, 이전의 인간 중심 포맷 출력을 대체합니다.