Заполняет вашу среду из файлов .env во время выполнения, а не на время сборки .
.env . Этот пакет генерирует файл __ENV.js из нескольких файлов .env , который содержит переменные среды, зарегистрированные белыми, которые имеют префикс REACT_APP_ .
< script src =" /public/__ENV.js " /> В браузере ваши переменные будут доступны в window.__ENV.REACT_APP_FOO и на сервере process.env.REACT_APP_FOO . Мы включили вспомогательную функцию, чтобы упростить получение значения:
# .env
REACT_APP_NEXT= " Next.js "
REACT_APP_CRA= " Create React App "
REACT_APP_NOT_SECRET_CODE= " 1234 "становится ...
import env from "@beam-australia/react-env" ;
export default ( props ) => (
< div >
< small >
Works in the browser: < b > { env ( "CRA" ) } </ b > .
</ small >
< small >
Also works for server side rendering: < b > { env ( "NEXT" ) } </ b > .
</ small >
< form >
< input type = "hidden" defaultValue = { env ( "NOT_SECRET_CODE" ) } />
</ form >
< small >
Entire safe environment:
< pre >
< code > { { JSON . stringify ( env ( ) ) } } </ code >
</ pre >
</ small >
</ div >
) ;Мы внедрили некоторые по умолчанию по умолчанию, которые имеют следующий приоритет:
{path-to-file} // from the --path, -p argument.env.{key} // from the --env, -e argument.env.local.env Ваша конфигурация доступна в браузере и process.env на сервере. Мы предлагаем вам добавить .env.local в .gitignore .
Такие рамки, как следующий, позволяют получить хорошие значения по умолчанию, такие как .env.local, .env.production, .env . Это имеет ограничение, когда вы можете запустить свое приложение в различных средах, таких как «Постановка, интеграция, QA», но все же построить приложение «Производство» с NODE_ENV=production . С React-env это возможно:
# .env.staging
REACT_APP_API_HOST= " api.staging.com "
# .env.production
REACT_APP_API_HOST= " api.production.com "
# .env.qa
REACT_APP_API_HOST= " api.qa.com "
# .env.integration
REACT_APP_API_HOST= " api.integration.com "
# .env.local
REACT_APP_API_HOST= " api.example.dev "
# .env
REACT_APP_API_HOST= " localhost " Для постановки вы просто установили бы APP_ENV=staging , где вы запускаете свое приложение:
{
...
"scripts": {
"start": "react-env --env APP_ENV -- next start" // where .env.${APP_ENV}
}
...
}
Таким образом, REACT_APP_API_HOST=api.staging.com в вашей стадии.
Пожалуйста, имейте в виду, что вы должны передать имя переменной среды
--env, а не ее значение.
- ✔ Допустимое использование (macOS):
APP_ENV=staging react-env --env APP_ENV -- next start- Общая ошибка:
react-env --env staging -- next start
Вы также можете указать путь к конкретному файлу ENV:
{
...
"scripts": {
"start": "react-env --path config/.env.defaults -- next start"
}
...
}
Вы можете использовать любую комбинацию этих двух аргументов вместе с по умолчанию .env, .env.local для создания конфигурации времени выполнения.
Вы также можете указать префикс переменных среды с белым списком:
{
...
"scripts": {
"start": "react-env --prefix NEXT_APP -- next start"
}
...
}
# .env
NEXT_APP_NEXT= " Next.js "
NEXT_APP_CRA= " Create React App "
NEXT_APP_NOT_SECRET_CODE= " 1234 " Вам необходимо добавить переменную evin REACT_ENV_PREFIX перед командой Jest, если вы используете env() во время тестов:
{
...
"scripts": {
"test": "REACT_ENV_PREFIX=NEXT_APP jest --maxWorkers=3"
}
...
}
Можно использовать этот пакет в качестве сценария ENTRYPOINT в DockerFile. Это будет генерировать ваш файл конфигурации __ENV.js , когда контейнер ботится и позволит вашим сценариям package.json оставаться неизменными. Конечно, node двоичный файл должен присутствовать в вашем контейнере.
FROM node:alpine
ENTRYPOINT yarn react-env --env APP_ENV
CMD yarn start$ react-env < args > -- < command ><command> Вы можете передать команду, например, файл входа Nodejs в инструмент CLI react-env . Например, react-scripts , next dev , next start
--env , -e (по умолчанию: null) Укажите название существующей переменной среды, значение которой является название среды, которую вы хотите, чтобы сделать React-env, специфичный для среды. Например, сначала вы можете установить APP_ENV=staging , а затем применить флаг --env APP_ENV . React-env загрузит .env.staging, .env.local, .env в этом порядке, причем последний принимает приоритет.
--path , -p (по умолчанию: null) Укажите конкретный файл ENV для загрузки, например react-env --path .env.testing загрузит .env.testing, .env.local, .env в таком порядке с приоритетом. Комбинация --env APP_ENV --path testing .env.testing, .env.staging, .env.local, .env где APP_ENV=staging .
--dest , -d (default: ./public) Измените место назначения по умолчанию для генерации файла __ENV.js .
--prefix (по умолчанию: react_app) Измените префикс по умолчанию для переменных ENV, списанных белого цвета. Для Exemple react-env --prefix CUSTOM_PREFIX будет белым списком переменные, такие как: CUSTOM_PREFIX_PUBLIC_KEY=my-public-key
--debug (по умолчанию: false) Включить отладку для React-env. Это будет регистрировать загруженные переменные среды браузера в вашу консоль при запуске react-env --debug
В качестве значительного нарушающего изменения мы отбросили возможность указать конкретные файлы через аргумент --env . В этом аргументе теперь указывается, что файл среды будет проанализирован в зависимости от работой среды. Например --env APP_ENV или -e APP_ENV , где APP_ENV=staging считывается в .env.staging . Для платформ очень часто есть staging, qa, integration среды, которые до сих пор встроены в режим «производства» с NODE_ENV=production . Это позволяет использовать это использование и многие другие.
-Вы все еще можете указать файлы через аргумент --path, -p .
Мы также отказались от добавления NODE_ENV по умолчанию, так как это был риск безопасности.
Файл теперь называется __ENV.js
Команда Depandand теперь находится в формате react-env <args> -- <command>