跳转到内容

旧版标志

为了帮助一些用户在 Astro 的不同版本之间迁移,我们偶尔会引入 legacy 标志。

这些标志允许你在最新版本中选择性地启用 Astro 的一些已弃用或过时的行为,这样你就可以在能够完全更新项目代码之前,继续升级并利用 Astro 的新版本。

类型: boolean
默认值: false

添加于: 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 };
贡献 社区 赞助