Запустите тесты, используя разные env. переменные в зависимости от команды в package.json - PullRequest
0 голосов
/ 18 апреля 2019

Попытка найти общее практическое решение о том, как запускать тесты в зависимости от команды test в package.json с соответствующими переменными среды из файла .env.

.env.// file

BASE_URL=dev
BASE_URL=stage
API_DEV=api-dev
API_STG=api-stage

package.json // file

"test:dev": "mocha ...",
"test:stage": "mocha ...",

Запуск test: dev Я хочу получить для своих тестов все переменные для среды DEV.

Можно ли так настроить?

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Допустим, ваш package.json содержит следующее свойство скриптов-

"test:local": "APP_ENV=local mocha ...",
"test:dev": "APP_ENV=dev mocha ...",
"test:stage": "APP_ENV=stage mocha ...",
"test:prod": "APP_ENV=prod mocha ..."

И давайте предположим, что у вас есть следующие файлы: .env для prod, .env.stage для stage и .env.dev для dev среды.

Теперь в вашем скрипте вы можете динамически загружать файлы env, используя пакет dotenv.

switch (process.env.APP_ENV) {
    case 'dev':
        env_suffix = ".dev";
        break;
    case 'stage':
        env_suffix = ".stage";
        break;
    case 'local':
        env_suffix = ".local";
        break;
}

require("dotenv").config({
    path: path.join(__dirname + "/../", ".env" + env_suffix)
});

Таким образом, вы можете иметь переменные окружения в вашем process.env объекте

0 голосов
/ 19 апреля 2019

Хорошо, я решил это так:

В папке config у меня есть .env stage.env prod.env

и index.js файл, где:

const {NODE_ENV = 'dev'} = process.env;
const dotenv = require('dotenv').config({path: `${__dirname}/${NODE_ENV}.env`});

module.exports = {

    api: {
        url: dotenv.parsed.API_BASE || ''
    },

    elastic: {
        host: dotenv.parsed.ELASTIC_HOST || ''
    }
};

и в пакете JSON у меня есть:

"elastic:dev": "mocha ./test/elasticsearch/*.js",
"elastic:stage": "NODE_ENV=stage mocha ./test/elasticsearch/*.js",
"elastic:prod": "NODE_ENV=prod mocha ./test/elasticsearch/*.js"

Простой и довольно сухой способ начать тесты, как босс, в зависимости от среды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...