Сделайте ваш контент index.html зависимым от переменных среды
При разработке приложения React вам может потребоваться включить или изменить скрипты или HTML-теги в зависимости от среды, для которой вы создаете. Это особенно актуально при работе с SEO или инструментами отслеживания, такими как Google Analytics или HotJar.
Возможно, вы не знаете, что приложения React, инициализированные с помощью Create React App, предлагают вам возможность сделать это. Хотя найти документацию по нему в Интернете очень сложно, на самом деле это классная функция. Фактически, с помощью всего лишь нескольких строк кода вы можете сделать содержимое вашего index.html
файла зависимым от переменных среды.
Давайте узнаем больше об этой малоизвестной функции и посмотрим, как ее использовать.
Условный код с HtmlWebpackPlugin
HtmlWebpackPlugin
поставляется с приложением Create React и используется для объединения. В частности, он использует public/index.html
в качестве шаблона и вставляет <script>
с путем, предоставленным webpack
, для создания окончательной HTML-страницы.
Кроме того, HtmlWebpackPlugin
предлагает разработчикам возможность работать с условным кодом со следующим синтаксисом:
<% if (condition) { %>
// code inserted in the final HTML file only if
// condition is true
<% } %>
Вы также можете использовать ветку else
и / или if else
следующим образом:
<% if (condition1) { %>
// code inserted in the final HTML file only if
// condition1 is true
<% } else if (contition2) { %>
// code inserted in the final HTML file only if
// condition1 is true
<% } else { %>
// code inserted in the final HTML file only if
// both condition1 and contition2 are false
<& } %>
Кроме того, во время отладки вам может также потребоваться распечатать значение переменной или условия. Вы можете сделать это с помощью такого синтаксиса:
<%= variable %>
В конце процесса npm build
или npm start
вы найдете его значение, напечатанное в сгенерированном HTML-файле.
Условный код в действии
Допустим, вы хотели, чтобы только ваше рабочее приложение React сканировалось Google, а Google Analytics присутствовал только в рабочем состоянии. Вы можете подумать о написании двух пользовательских сценариев сборки, но это не обязательно.
Фактически, вы легко можете добиться обоих этих результатов. Вам нужно только условно изменить код вашего public/index.html
файла в зависимости от текущей среды, как показано ниже:
Что происходит, так это то, что два раздела, написанные с использованием специального синтаксиса, представленного выше, будут включены в окончательный HTML-файл только тогда, когда process.env.NODE_ENV
будет иметь желаемое значение. Эта переменная среды является частью приложения Create React, как указано в официальной документации.
[…] Встроенная переменная среды с именем
NODE_ENV
. Вы можете прочитать это сprocess.env.NODE_ENV
. Когда вы запускаетеnpm start
, он всегда равен'development'
, когда вы запускаетеnpm test
, он всегда равен'test'
, а когда вы запускаетеnpm run build
для создания производственного пакета, он всегда равен'production'
. Вы не можете изменитьNODE_ENV
вручную . - Создать приложение React
И вуаля! Ваше index.html
содержимое теперь зависит от переменных среды.
Заключение
Сегодня мы рассмотрели, как изменить index.html
файл в зависимости от переменных среды. Достичь этой цели легко и требуется всего несколько строк кода. В частности, это возможно благодаря HtmlWebPackPlugin
, который по умолчанию поставляется с приложением Create React. Эта полезная, но не широко известная функция React может сэкономить вам время, позволяя избежать написания пользовательских сценариев для сборок, ориентированных на среду.
Спасибо за прочтение! Надеюсь, эта статья оказалась для вас полезной. Не стесняйтесь оставлять любые вопросы, комментарии или предложения.