컨텐츠로 건너뛰기

레거시 플래그

일부 사용자들의 Astro 버전 간 마이그레이션을 돕기 위해, 때때로 우리는 legacy 플래그를 도입합니다.

이러한 플래그를 통해 최신 버전의 Astro에서 더 이상 사용되지 않거나 구식이 된 동작을 선택적으로 사용할 수 있으며, 프로젝트 코드를 완전히 업데이트할 수 있을 때까지 새로운 Astro 릴리스의 이점을 계속해서 활용할 수 있습니다.

타입: boolean
기본값: false

Added in: astro@5.0.0

콘텐츠 컬렉션에 대한 레거시 동작 활성화 (Astro v2부터 v4까지 사용됨)

astro.config.mjs
import { defineConfig } from 'astro/config';
export default defineConfig({
legacy: {
collections: true
}
});

활성화되면, datacontent 컬렉션(만)이 레거시 콘텐츠 컬렉션 구현을 사용하여 처리됩니다. 대신 loader가 있는 컬렉션(만)은 계속해서 콘텐츠 레이어 API를 사용합니다. 두 종류의 컬렉션은 각각의 구현을 사용하여 동일한 프로젝트에 존재할 수 있습니다.

다음과 같은 제한 사항이 계속 존재합니다:

  • 모든 레거시(type: 'content' 또는 type: 'data') 컬렉션은 계속 src/content/ 디렉터리에 위치해야 합니다.
  • 이러한 레거시 컬렉션은 암시적으로 glob() 로더를 사용하도록 변환되지 않으며, 대신 레거시 코드에 의해 처리됩니다.
  • 콘텐츠 레이어 API를 사용하는 컬렉션(loader가 정의된)은 src/content/에서는 금지되지만, 프로젝트의 다른 곳 어디에서나 존재할 수 있습니다.

이 플래그를 제거하고 레거시 컬렉션을 새로운 콘텐츠 레이어 API로 마이그레이션할 준비가 되면, src/content/에서 컬렉션으로 계속 사용하고자 하는 모든 디렉터리에 대해 컬렉션을 정의해야 합니다. 빈 컬렉션을 선언하는 것만으로도 충분하며, Astro는 레거시 컬렉션에 대한 적절한 정의를 암시적으로 생성할 것입니다.

src/content/config.ts
import { defineCollection, z } from 'astro:content';
const blog = defineCollection({ })
export const collections = { blog };
기여하기 커뮤니티 Sponsor