Утилиты для webpack
EnvPlugin
Плагин для зашивания переменных среды в сборки. Для правильной работы ConfigSource в браузерных сборках, пакет isomorph предоставляет плагин EnvPlugin, который зашьёт переменные среды в специальный глобальный объект ISOMORPH_ENV.
import { EnvPlugin } from '@sima-land/isomorph/utils/webpack';
// Добавляем EnvPlugin плагин для зашивания переменных среды в сборки.
{
plugins: new EnvPlugin(config.env)
}
// Добавляем EnvPlugin плагин на примере сбрки в пакете @dev-dep/scripts.
...(config.env && {
plugins: [...(webpackConfig.plugins ?? []), new EnvPlugin(config.env)],
})
//config.env может содержать следущие опции:
{
/** Целевая среда. */
target?: 'auto' | 'web' | 'node';
/** Нужно ли использоваь .env файлы. */
dotenvUsage?: boolean;
/** Переменные, зашиваемые из среды запуска. */
additional?: string[];
/** Переменные определяемые на месте. */
define?: Record<string, string>;
}
target - Указывает для какой сборки создается конфигурация.
'web' - браузерная сборка. 'node' - серверная сборка.
'auto' - Значение тогда берется из конфигурации конфига webpack: { target: 'web' }
Если полученное значение отличается от 'web' или 'node' будет сообщение об ошибке: [EnvPlugin] Target is unknown, variables will NOT be added'
Плагин формирует список переменных среды из которых буду выбраны нужные, командой:
const result = { ...process.env };
dotenvUsage - указывает нужно ли дополнять список переменных среды из файлов .env
В файлах .env и .env.development указываются дополнительные переменные среды для сборок соответствующие окружению для продакшн и разработки. При указании dotenvUsage: true, реализация плагина будет также пытаться прочитать env-файл, соответствующий окружению, определенному переменной среды NODE_ENV. Например для NODE_ENV='development' будет выполнена попытка прочитать файл .env.development