Env
Env - модуль для валидации и типизации переменных окружения
Основные задачи, решаемые модулем:
- Валидация переменных окружения
- Фильтрация
process.envдляwebpackиvite - Их частичная типизация
Основной принцип работы состоит в том, что сначала модуль выбирает
используемые переменные process.env согласно передаваемой zod схеме,
валидирует эти переменные через схему и дальше извлечение типа из схемы
для типизации переменных и генерация файла env.d.ts с добавлением
reference в nuxt.d.ts.
В случае неудачной валидации выбрасывается ошибка с деталями о неверных переменных и билд проекта останавливается.
Module options
schema
- type:
z.ZodObject<ZodRawShape> - default:
DEFAULT_ENV_SCHEMA
Zod схема для валидации и типизации process.env.
Дефолтная схема находится в файле lib/modules/env/default-schema.ts.
errorMessageOptions
- type:
ErrorMessageOptions - default:
DEFAULT_ERROR_MESSAGE_OPTIONS
Объект для форматирования ZodError для пакета zod-error.
Дефолтное значение находится в файле lib/modules/env/validator.ts.
zod-error
Usage
import { z } from 'zod';
import { defineNuxtConfig } from 'nuxt/config';
import { DEFAULT_ENV_SCHEMA } from 'shared-front/lib/modules/env';
const schema = z.object({
FOO: z.string().describe('Numeric string'),
MODE: z.enum(['dev', 'prod'])
});
const anotherSchema = DEFAULT_ENV_SCHEMA.extend({
FOO: z.string(),
});
const errorMessageOptions = {
path: {
enabled: true,
type: 'breadcrumbs',
delimeter: '/',
transform: ({ value }) => value,
},
message: {
enabled: true,
transform: ({ value }) => value,
},
};
export default defineNuxtConfig({
base: {
env: {
schema,
errorMessageOptions
},
},
});
Сгенерированный файл с типами env.d.ts
declare global {
namespace NodeJS {
interface ProcessEnv {
/** Numeric string */
FOO: string;
MODE: "dev" | "prod";
}
}
}
export {}