使用环境变量
Astro 使用 Vite 的环境变量,你可以随意使用它们的任一方式获取并设置环境变量。
注意所有环境变量都对服务端代码可见,出于安全考虑只有以 PUBLIC_
开始的环境变量才会对客户端代码可见。
查看官方的环境变量示例了解最佳实践。
在这个示例中,PUBLIC_ANYBODY
(通过 import.meta.env.PUBLIC_ANYBODY
访问) ,而 SECRET_PASSWORD
(通过 import.meta.env.SECRET_PASSWORD
访问)将只对服务端可见。
默认环境变量
Section titled 默认环境变量Astro 包括了几个开箱即用的环境变量:
import.meta.env.MODE
(development
|production
):站点的运行模式。在运行astro dev
时为development
,在运行astro build
时为production
。import.meta.env.BASE_URL
(string
):站点运行的基础链接。它由base
配置项 决定。import.meta.env.PROD
(boolean
):你的站点是否运行在生产环境。import.meta.env.DEV
(boolean
): 你的站点是否运行在开发环境(总是和import.meta.env.PROD
相反)。import.meta.env.SITE
(string
):特指项目中astro.config
中的site
项。
设置环境变量
Section titled 设置环境变量环境变量会从项目目录中的 .env
文件中加载。
你也可以在文件名上附加一个模式(production
或 development
),如 .env.production
或 .env.development
,这使得环境变量只在该模式下生效。
只要在项目目录下创建 .env
文件,并在其中添加一些变量。
获取环境变量
Section titled 获取环境变量在 Vite 中,你可以使用 process.env
,而不是使用 import.meta.env
,它使用了 ES2020 中添加的 import.meta
功能。
例如,使用 import.meta.env.PUBLIC_POKEAPI
来获取 PUBLIC_POKEAPI
环境变量。
TypeScript 智能提示
Section titled TypeScript 智能提示默认情况,Astro 在 astro/client.d.ts
中为 import.meta.env
提供类型定义。
虽然你可以在 .env.[模式]
文件中定义更多的自定义环境变量,但你可能想为自行定义的环境变量提供 TypeScript 的智能提示。这些变量的前缀是 PUBLIC_
。
为了实现这一点,你可以在 src/
中创建一个 env.d.ts
,并像这样配置 ImportMetaEnv
。