⚽ Astro 5.12 成功“进球”,带来了升级的 Netlify 开发体验、内容加载器中的 TOML 支持等等!
首发阵容包括
要升级现有项目,请使用自动化的 @astrojs/upgrade
CLI 工具。或者,通过运行包管理器的升级命令来手动升级
# Recommended:npx @astrojs/upgrade
# Manual:npm install astro@latestpnpm upgrade astro --latestyarn upgrade astro --latest
内容加载器支持 TOML
Astro 5.12 为内容集合带来了对 TOML 文件的原生支持。Astro 的 file()
和 glob()
内容加载器此前已支持 Markdown、JSON 和 YAML 文件,现在您也可以使用 TOML 文件了。
启用 TOML 支持无需任何配置:只需使用内置加载器将 .toml
文件添加到集合中即可。例如,如果您有一个包含以下 TOML 文件的目录
name = "Apollo"launch_date = "1969-07-16"crew = ["Neil Armstrong", "Buzz Aldrin", "Michael Collins"]
然后您可以创建一个包含 TOML 文件的内容集合
import { defineCollection, z } from 'astro:content';import { glob } from 'astro/loaders';
const spacecraft = defineCollection({ loader: glob({ pattern: '*.toml', base: './src/content/spacecraft' }), schema: z.object({ name: z.string(), launch_date: z.coerce().date(), crew: z.array(z.string()), }),});export const collections = { spacecraft };
然后您可以在 Astro 组件中访问 TOML 内容
---import { getCollection } from 'astro:content';
const spacecraft = await getCollection('spacecraft');---
<ul> { spacecraft.map((item) => ( <li> <h2>{item.name}</h2> <p>Launch Date: {item.launch_date.toLocaleDateString()}</p> <p>Crew: {item.crew.join(', ')}</p> </li> )) }</ul>
全新的 Netlify 开发体验
现在,Netlify 适配器在开发过程中由 Netlify 自家的 Vite 插件提供支持,将 Netlify 的整个平台和基本功能带到您的本地开发环境!
Netlify 在 localhost 上的强大功能
到目前为止,在本地开发中使用 Astro 的 Netlify 原语需要通过 Netlify CLI 运行您的项目。新的适配器将这些功能直接嵌入到 Astro 的开发服务器中。
升级到最新版本的适配器后,运行 astro dev
将提供
- 本地 Netlify 图像 CDN 服务器。默认情况下,它用于图像
- 本地 Netlify Blobs 服务器。默认情况下,它用于会话
- 来自您的 Netlify 配置的重定向、重写和头部信息
- 按需页面中的Netlify Edge Context
- 从您链接的 Netlify 站点填充的环境变量
配置开发功能
伴随这些功能而来的是配置它们的方式。Netlify 适配器现在在其配置中接受 devFeatures
选项,以自定义在开发期间启用哪些功能。目前,您可以配置的功能有
images
: 在开发期间为 Astro 图像启用本地 Netlify 图像 CDN。默认为true
。environmentVariables
: 自动从您链接的 Netlify 站点中填充开发服务器的环境变量。默认为false
。
您可以在 Astro 配置文件中将其作为选项传递给 Netlify 适配器
import { defineConfig } from 'astro/config'import netlify from '@astrojs/netlify'
export default defineConfig({ adapter: netlify({ devFeatures: { environmentVariables: true, images: false, }, })})
现在,您可以在自己的开发环境中尽享 Netlify 的丰富功能!
感谢来自 Netlify 的 Eduardo Bouças 和 chee rabbits 贡献此功能。特别感谢 chee 也为此文章做出了贡献。实验性原始环境变量值
一个新的实验性配置选项允许您选择退出 Astro 对 import.meta.env
中环境变量值的自动类型强制转换。默认情况下,Astro 会将 "true"
、"false"
、"1"
和 "0"
等字符串值转换为其各自的类型,但这可能会出乎意料,因为环境变量通常预期为字符串。
这使 Astro 的行为与 Vite 处理环境变量的方式保持一致,并可能在未来的主要版本中成为默认设置。
要启用此功能,请将 rawEnvValues
标志添加到您的 Astro 配置中
export default defineConfig({ experimental: { rawEnvValues: true, },});
此实验性选项仅影响 import.meta.env
对象,不影响为 Astro 类型安全环境变量提供支持的 astro:env
模块。
感谢 Adam Langbert 贡献此功能。
错误修复
一如既往,自 5.11 版本发布以来,我们一直在努力修复问题。有关所有详细信息,请参阅更新日志。
社区
Astro 核心团队成员是
Alexander Niebuhr , Ben Holmes , Caleb Jasik , Chris Swithinbank , Emanuele Stoppa , Erika , Florian Lefebvre , Fred Schott , Fuzzy , HiDeoo , Luiz Ferraz , Matt Kane , Matthew Phillips , Nate Moore , Reuben Tier , Sarah Rainsberger , and Yan Thomas
感谢所有其他为 Astro 5.12 的代码和文档增补及改进做出贡献的贡献者,包括
Adam Langbert, Adam Matthiesen, Adit Sachde, Anmoti, Armand Philippot, chee, coderfee, Dixon Sean Low Yan Feng, Eduardo Bouças, Farhad, Junseong Park, Kenichi Nakamura, knj, liruifengv, Martin Trapp, Matthew Justice, Nin3, Paul Valladares, Philippe Serhal, Reuben Tier, Rezix, Robbie Wagner, ryu, Surya Kencana Putra, Thomas Bonnet, and Toby Nguyen