Использование переменных окружения
Astro использует встроенную в Vite поддержку переменных окружения, и позволяет вам использовать любые его методы для работы с переменными.
Обратите внимание, что, хотя все переменные окружения доступны в коде на стороне сервера, только переменные с префиксом PUBLIC_
доступны на стороне клиента в целях безопасности.
В этом примере, PUBLIC_ANYBODY
(доступная через import.meta.env.PUBLIC_ANYBODY
) будет доступна в серверном и клиентском коде, в то время, как SECRET_PASSWORD
(доступная через import.meta.env.SECRET_PASSWORD
) будет существовать только на стороне сервера.
.env
файлы не загружаются внутри конфигурационных файлов (EN).
Переменные окружения по умолчанию
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
вашего проекта.
Настройка переменных окружения
.env
файлы
Переменные окружения могут быть загружены с помощью .env
файлов из директории вашего проекта.
Вы также можете задать режим (production
или development
) в имени файла, например, .env.production
или .env.development
, что сделает ваши переменные доступными только в заданном режиме.
Просто создайте .env
файл в директории проекта и добавьте в него переменные:
Дополнительные сведения о .env
файлах, приведены в документации Vite.
Используя CLI
Вы также можете добавить переменные окружения при запуске проекта:
Переменные, заданные таким способом, будут доступны везде в рамках вашего проекта, включая клиент.
Получение переменных окружения
Вместо использования process.env
, в Vite вы работаете с import.meta.env
, которая использует функцию import.meta
добавленную в ES2020.
For example, use import.meta.env.PUBLIC_POKEAPI
to get the PUBLIC_POKEAPI
environment variable.
Поскольку Vite статически заменяет import.meta.env
, вы не сможете получить к нему доступ с помощью динамических ключей, таких как import.meta.env[key]
.
IntelliSense для TypeScript
По умолчанию, Astro предоставляет определение типа для import.meta.env
в файле astro/client.d.ts
.
В то время, как вы объявляете переменные окружения в .env.[mode]
файлах, вы можете захотеть получить поддержку TypeScript IntelliSense для пользовательских переменных, которые имеют префикс PUBLIC_
.
Для достижения этой цели, вы можете создать файл env.d.ts
в каталоге src/
и настроить ImportMetaEnv
следующим образом: