有没有办法从控制台将环境变量传递给类星体?

时间:2019-01-09 11:15:14

标签: quasar

我开发了一个类星应用程序,并且使用了“ dotenv”插件来解析.env文件。 有时,我需要对变量进行临时更改,例如仅对当前运行使用不同的后端地址,而我不想更改.env文件。 是否可以在控制台中传递环境变量?

例如

quasar dev BACKEND='http://localhost'

2 个答案:

答案 0 :(得分:1)

我的解决方案:

在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"

答案 1 :(得分:0)

我的解决方案:

在我的Dockerfile中,我导出了环境变量

ENV PROTOCOL='https://'

ENV HOST='example.com.br'

ENV PORT=443

然后,我在文件config / index.js中获得process.env中的变量

类似这样的东西:

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)
}

希望对你有帮助