Определение среды Node в Nest.js - PullRequest
2 голосов
/ 11 марта 2019

Я нахожусь в процессе настройки проекта Nest.js и ищу эффективное решение для определения среды Node, которое используется ConfigService для загрузки переменных среды:

import { Module } from '@nestjs/common';
import { ConfigService } from './config.service';

@Module({
    providers: [
        {
            provide: ConfigService,
            useValue: new ConfigService(`environments/${process.env.NODE_ENV}.env`)
        }
    ],
    exports: [ConfigService]
})
export class ConfigModule {}

Rightсейчас я определяю это непосредственно в сценариях npm (например, "start:dev": "NODE_ENV=development nodemon"), но мне интересно, есть ли какой-то лучший подход для обработки различных сред вместо добавления его в каждом сценарии?

1 Ответ

1 голос
/ 11 марта 2019

Разработка

Если оно должно быть всегда development, просто установите его как системную переменную, см. Производство / Сценарий ниже.Если вы хотите запускать разные среды во время разработки, добавьте свои сценарии запуска npm.Кроме того, вы можете использовать cross-env, чтобы убедиться, что ваши скрипты работают на разных платформах:

"start": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register src/main.ts",

Тестирование

Если вы хотите запустить интеграциютесты в другой среде, вы можете установить его в jest-e2e.json:

"globals": {
  "NODE_ENV": "test"
}

Настройка (или изменение) вашей среды для одного конкретного теста также может быть выполнена в коде теста:

let previousNodeEnv;
beforeAll(() => {
  previousNodeEnv = process.env.NODE_ENV;
  process.env.NODE_ENV = 'test';
});

afterAll(() => process.env.NODE_ENV = previousNodeEnv);

Производство / подготовка

В системе подготовки или производства я бы рекомендовал установить ее как обычную системную переменную, см. эту тему .

...