旧版标志
为了帮助一些用户在 Astro 的不同版本之间迁移,我们偶尔会引入 legacy
标志。
这些标志允许你在最新版本中选择性地启用 Astro 的一些已弃用或过时的行为,这样你就可以在能够完全更新项目代码之前,继续升级并利用 Astro 的新版本。
类型: boolean
默认值: false
astro@5.0.0
为内容集合启用旧版行为(在 Astro v2 到 v4 中使用)
import { defineConfig } from 'astro/config';export default defineConfig({ legacy: { collections: true }});
如果启用,data
和 content
集合(仅限这两种)将使用旧版内容集合的实现来处理。而带有 loader
的集合(仅限这种)将继续使用内容层 API。这两种集合可以存在于同一个项目中,各自使用其相应的实现。
以下限制仍然存在
- 任何旧版(
type: 'content'
或type: 'data'
)集合必须继续位于src/content/
目录中。 - 这些旧版集合不会被转换为隐式使用
glob()
加载器,而是由旧版代码处理。 - 使用内容层 API 的集合(定义了
loader
)禁止放在src/content/
目录中,但可以存在于项目的其他任何地方。
当你准备好移除此标志并将你的旧版集合迁移到新的内容层 API 时,你必须为 src/content/
中任何你希望继续作为集合使用的目录定义一个集合。声明一个空集合就足够了,Astro 会为你的旧版集合隐式生成一个合适的定义
import { defineCollection, z } from 'astro:content';
const blog = defineCollection({ })
export const collections = { blog };