Есть ли способ передать переменные окружения в квазар из консоли? - PullRequest
0 голосов
/ 09 января 2019

Я разрабатываю квазар-приложение и использую плагин 'dotenv' для разбора файла .env. Иногда мне нужно внести временные изменения в переменные, например, использовать другой адрес серверной части только для текущего запуска, и я не хочу изменять файл .env. Есть ли способ передать переменную окружения в консоль?

например.

quasar dev BACKEND='http://localhost'

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Мое решение:

В моем Dockerfile я экспортирую переменные среды

ENV PROTOCOL='https://'

ENV HOST='example.com.br'

ENV PORT=443

затем я получаю переменные в process.env в моем файле config / index.js

как то так:

module.exports = {
  NODE_ENV: '"production"',
  PROTOCOL: JSON.stringify(process.env.THRUST_PROTOCOL),
  HOST: JSON.stringify(process.env.THRUST_HOST),
  PORT: JSON.stringify(process.env.THRUST_PORT)
}

Я надеюсь помочь

0 голосов
/ 09 января 2019

Мое решение:

In quasar.conf.js:

    const envparser = require('./src/envparser')
    ...
    build: {
          env: envparser(),

    ...

/ SRC / envparser:.

    const DotEnv = require('dotenv')
    const parsedEnv = DotEnv.config().parsed

    const argEnv = {}
    process.argv.forEach((v, k) => {
      if (v.indexOf('--env.') === 0) {
        argEnv[v.substring(6)] = process.argv[k + 1]
      }
    })

    module.exports = function () {
      for (let key in parsedEnv) {
        if (typeof parsedEnv[key] === 'string') {
          parsedEnv[key] = JSON.stringify(parsedEnv[key])
        }
      }

      for (let key in argEnv) {
        parsedEnv[key] = JSON.stringify(argEnv[key])
      }

      return parsedEnv
    }

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

quasar dev --env.VARIABLE "Value"

...