@astrojs/ netlify
此适配器可以部署你的 hybrid
或 server
渲染站点 到 Netlify。
在我们的 Netlify 部署指南 中学习如何部署你的 Astro 网站。
为什么是 Astro Netlify
段落标题 为什么是 Astro Netlify如果你正在使用 Astro 作为静态站点生成器——也就是它的开箱即用的行为——你不需要一个适配器。
如果你希望 使用按需渲染,也称作服务器端渲染(SSR),Astro 需要一个与你的部署运行时相匹配的适配器。
Netlify 是一个部署平台,允许你通过直接连接 GitHub 仓库来托管您的网站。这个适配器增强了 Astro 的构建流程,为通过 Netlify 部署项目做好准备。
安装
段落标题 安装使用以下 astro add
命令添加 Netlify 适配器。这将在一步中安装适配器并对 astro.config.mjs
文件进行适当的更改。
手动添加依赖
段落标题 手动添加依赖如果你更喜欢手动安装适配器,请完成以下两个步骤:
- 安装 Netlify 适配器到你的项目依赖中,使用你喜欢的包管理器。如果你使用 npm 或者不确定,请在终端中运行:
- 添加两行内容到你的
astro.config.mjs
项目配置文件中。
用法
段落标题 用法按照指南 在本地构建你的站点。构建完成后,你将会有一个包含 Netlify Functions 的 .netlify/
文件夹,其中包含 .netlify/functions-internal/
文件夹中的函数和 .netlify/edge-functions/
文件夹中的 Netlify Edge Functions。
要部署你的站点,请安装 Netlify CLI 并运行:
这篇 Netlify 博客文章 和 Netlify 文档 提供了更多关于如何使用这个集成部署到 Netlify 的信息。
从你的站点访问 edge 上下文
段落标题 从你的站点访问 edge 上下文Netlify Edge Functions 提供了一个 context 对象,其中包含有关请求的元数据,例如用户的 IP、地理位置数据和 cookie。
这可以通过 Astro.locals.netlify.context
对象访问:
如果你使用 TypeScript,你可以通过更新 src/env.d.ts
来使用 NetlifyLocals
来获得正确的类型:
这不适用于预渲染的页面。
在 Edge Functions 中运行 Astro 中间件
段落标题 在 Edge Functions 中运行 Astro 中间件任何 Astro 中间件都会在构建时应用于预渲染页面,在运行时应用于按需渲染页面。
要在预渲染页面上实现重定向、访问控制或自定义响应头,请通过启用 edgeMiddleware
选项在 Netlify Edge Functions 上运行你的中间件:
配置 edgeMiddleware: true
将会将你的中间件部署为 Edge Function,并在所有路由上运行它——包括预渲染的页面。但是,中间件中指定的 locals 不会对任何预渲染的页面可用,因为它们已经在构建时完全渲染了。
Netlify 图片 CDN 支持
段落标题 Netlify 图片 CDN 支持这个适配器使用 Netlify 图片 CDN 来实时转换图片,而不会影响构建时间。 它背后是使用 Astro 图片服务 实现的。
这个适配器不支持你的 Astro 配置中的 image.domains
和 image.remotePatterns
属性。要为 Netlify 图片 CDN 指定远程路径,请使用 netlify.toml
中的 remote_images
字段。
静态站点和重定向
段落标题 静态站点和重定向对于静态站点,你通常不需要适配器。但是,如果你在 Astro 配置中使用了 redirects
配置,Netlify 适配器可以将其转换为正确的 _redirects
格式。
一旦你运行了 astro build
,就会有一个 dist/_redirects
文件。Netlify 将使用它来正确地路由生产环境中的页面。
你仍然可以包含一个 public/_redirects
文件来手动重定向。你在重定向配置中指定的任何重定向都会被追加到你自己的重定向的末尾。
缓存页面
段落标题 缓存页面可以缓存没有任何动态内容的按需渲染页面,以提高性能并降低资源使用率。
在适配器中启用 cacheOnDemandPages
选项将会缓存所有服务器渲染的页面,最长可达一年:
这可以通过向你的响应添加缓存头来根据每个页面进行更改:
使用细粒度缓存控制,Netlify 支持标准缓存头,例如 CDN-Cache-Control
或 Vary
。
请参阅文档,了解如何实现例如 TTL 或 SWR 缓存:https://docs.netlify.com/platform/caching
示例
段落标题 示例- Astro Netlify Edge Starter 提供了一个示例以及 README 中的指南。
- 浏览 GitHub 上的 Astro Netlify 项目 查看更多示例!
故障排除
段落标题 故障排除寻求帮助,请查看 Discord 上的 #support
频道。我们友好的支持小组成员在这里帮助你!
你还可以查看我们的 Astro 集成文档 了解更多关于集成的信息。
参与贡献
段落标题 参与贡献这个项目由 Astro 核心团队维护。欢迎提交 issue 或 PR!
更新日志
段落标题 更新日志查看 CHANGELOG.md,了解本集成的更改历史。