Использование переменных окружения
Astro использует встроенную в Vite поддержку переменных окружения и позволяет вам использовать любой из его методов для работы с ними.
Обратите внимание, что, хотя все переменные окружения доступны в коде на стороне сервера, только переменные с префиксом PUBLIC_ доступны на стороне клиента в целях безопасности.
SECRET_PASSWORD=password123PUBLIC_ANYBODY=thereВ этом примере PUBLIC_ANYBODY (доступный через import.meta.env.PUBLIC_ANYBODY) будет доступен в серверном и клиентском коде, а SECRET_PASSWORD (доступный через import.meta.env.SECRET_PASSWORD) будет существовать только на стороне сервера.
Файлы .env не загружаются внутри конфигурационных файлов.
Переменные окружения по умолчанию
Заголовок раздела Переменные окружения по умолчаниюAstro включает в себя несколько готовых переменных окружения:
- import.meta.env.MODE: Режим, в котором работает ваш сайт. Это- developmentпри запуске с помощью- astro devи- productionпри запуске с помощью- astro build.
- import.meta.env.PROD:- true, если ваш сайт работает в режиме производства;- falseв противном случае.
- import.meta.env.DEV:- true, если ваш сайт работает в режиме разработки;- falseв противном случае. Всегда противоположно- import.meta.env.PROD.
- import.meta.env.BASE_URL: Базовый url, с которого обслуживается ваш сайт. Определяется опцией конфигурации- base(EN).
- import.meta.env.SITE: Устанавливается опцией- site(EN), указанной в- astro.configвашего проекта.
- import.meta.env.ASSETS_PREFIX: Префикс для ссылок на ресурсы, сгенерированные Astro, если установлена опция конфигурации- build.assetsPrefix(EN). Это можно использовать для создания ссылок на ресурсы, не обрабатываемые Astro.
Используйте их как любую другую переменную окружения.
const isProd = import.meta.env.PROD;const isDev = import.meta.env.DEV;Настройка переменных окружения
Заголовок раздела Настройка переменных окруженияФайлы .env
Заголовок раздела Файлы .envПеременные окружения могут быть загружены из файлов .env в директории проекта.
Вы также можете задать режим (production или development) в имени файла, например, .env.production или .env.development, что сделает ваши переменные доступными только в заданном режиме.
Просто создайте файл .env в каталоге проекта и добавьте в него несколько переменных.
# Это будет доступно только на стороне сервера!DB_PASSWORD="foobar"# Это будет доступно везде!PUBLIC_POKEAPI="https://pokeapi.co/api/v2"Дополнительные сведения о файлах .env, приведены в документации Vite.
Использование CLI
Заголовок раздела Использование CLIВы также можете добавить переменные окружения при запуске проекта:
PUBLIC_POKEAPI=https://pokeapi.co/api/v2 npm run devPUBLIC_POKEAPI=https://pokeapi.co/api/v2 pnpm run devPUBLIC_POKEAPI=https://pokeapi.co/api/v2 yarn run devПолучение переменных окружения
Заголовок раздела Получение переменных окруженияДоступ к переменным окружения в Astro осуществляется с помощью import.meta.env, используя функцию import.meta, добавленную в ES2020, вместо process.env.
Например, используйте import.meta.env.PUBLIC_POKEAPI, чтобы получить переменную окружения PUBLIC_POKEAPI.
// Когда import.meta.env.SSR === trueconst data = await db(import.meta.env.DB_PASSWORD);
// Когда import.meta.env.SSR === falseconst data = fetch(`${import.meta.env.PUBLIC_POKEAPI}/pokemon/squirtle`);При использовании SSR переменные окружения могут быть доступны во время выполнения в зависимости от используемого адаптера SSR. В большинстве адаптеров вы можете получить доступ к переменным окружения с помощью process.env, но некоторые адаптеры работают по-другому. Для адаптера Deno вы будете использовать Deno.env.get(). Смотрите, как получить доступ к среде выполнения Cloudflare (EN) для работы с переменными окружения при использовании адаптера Cloudflare. Сначала Astro проверит окружение сервера на наличие переменных, и если они не существуют, Astro будет искать их в файлах .env.
IntelliSense для TypeScript
Заголовок раздела IntelliSense для TypeScriptПо умолчанию Astro предоставляет определение типа для import.meta.env в файле astro/client.d.ts.
Хотя вы можете объявить больше пользовательских переменных env в файлах .env.[mode], вы можете захотеть получить поддержку TypeScript IntelliSense для пользовательских переменных, которые имеют префикс PUBLIC_.
Для этого можно создать env.d.ts в src/ и настроить ImportMetaEnv следующим образом:
interface ImportMetaEnv {  readonly DB_PASSWORD: string;  readonly PUBLIC_POKEAPI: string;  // больше переменных env...}
interface ImportMeta {  readonly env: ImportMetaEnv;} 
			
