lechuck.dev

Astro 블로그 업그레이드 v2 → v3

마지막 업데이트:

Astro를 사용한 기술 블로그 만들기에서는 Astro v2 를 기반으로 블로그를 만들어 보았습니다. 이 블로그를 Astro v3 로 업그레이드 해보겠습니다.

여기서는 기존 블로그 만들기 문서를 기준으로 변경할 부분만 설명하며, 그 외의 추가된 기능이 있다면 Upgrade to Astro v3 문서를 추가로 참조하는 것이 좋습니다.

1. Astro 업그레이드

현재 사용중인 astrojs 관련 디펜던시들을 모두 최신 버전으로 업그레이드합니다.

$ pnpm up astro solid-js "@astrojs/*" --latest

2. node.js 최소 버전 설정

Astro v3 에서 필요로 하는 node.js 최소 버전은 18.14.1 입니다.

할 일

package.json 파일에서 최소 버전을 설정합니다.

{
  "engines": {
    "node": ">= 18.14.1"
  },
}

3. 디폴트 포트 변경

Astro v3 에서는 디폴트 리스닝 포트가 3000 -> 4321 로 변경되었습니다.

할 일

astro.config.mjs 파일에서 사용중인 포트 설정을 변경합니다.

export default defineConfig({
  site: import.meta.env.DEV
    ? "http://localhost:4321"
    : "https://blog.lechuck.dev",
  // ...
});

그 외에도 테스트나 README 문서에서 사용 중이라면 포트를 변경해야 합니다.

4. HTTP 메서드 이름 변경

Astro v2 에서는 HTTP Request method 는 모두 소문자를 사용했습니다: get, post, put, all, del.

Astro v3 에서는 모두 대문자로 변경되었으며, delDELETE 로 변경되었습니다.

할 일

src/pages/rss.xml.js 파일을 열고 함수 이름을 변경합니다.

// get → GET
export async function GET(context) {
  // ...
}

5. 멀티 JSX 프레임워크 설정

Astro v2 에서 multiple JSX framework integration을 사용해 React, Solid, Preact 를 같은 프로젝트에서 동시에 사용할 수 있었습니다.

Astro v3 에서는 여러 개의 JSX 프레임워크를 사용하는 경우, include, exclude 설정을 사용해 각 파일이 어느 JSX 프레임워크를 사용하는지 설정해야 합니다.

기존에 만들었던 블로그는 Solid 만 사용하고 있었지만, React와 같은 다른 프레임워크도 같이 사용하고 있었다면 프레임워크 종류별로 컴포넌트를 구분하는 것을 추천합니다.

할 일

astro.config.mjs 파일을 열고 solidJs 항목에 include 설정을 추가합니다.

export default defineConfig({
  integrations: [
    // ...
    solidJs({
      include: ['**/solid/*'],
    }),
  ],
  // ...
});

이전에도 src/components/solid/ 디렉토리 아래에 Solid 컴포넌트가 위치하고 있었기 때문에, 기존 컴포넌트의 위치는 변경할 필요가 없습니다.