跳转到内容

旧版标志

为了帮助部分用户在 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 的集合则会继续使用 Content Layer API 来实现。这两种类型的集合能同时存在于一个项目当中,而分别使用他们各自的实现形式。

以下限制仍然存在:

  • 任何旧版(type: 'content'type: 'data')集合仍需位于 src/content/ 目录下。
  • 这些旧版集合不会被转换为隐式使用 glob() 加载器,而是由旧版代码处理。
  • src/content/ 中禁止使用(定义了 loader 的)Content Layer API 集合,但它可以位于项目中任何其他的位置。

当你准备移除此标志,并为旧版集合迁移到新的 Content Layer API 时,你必须为 src/content/ 中,那些想继续用作集合的目录去定义一个集合。声明一个空集合就足够了,Astro 将为你的旧版集合隐式地生成合适的定义:

src/content/config.ts
import { defineCollection, z } from 'astro:content';
const blog = defineCollection({ })
export const collections = { blog };
贡献 社区 赞助
京ICP备15031610号-99