首页 > 解决方案 > EmberJs:如何将数据动态注入 ENV?

问题描述

我需要在构建阶段之前动态注入一些数据。

在我的 config/environment.js 我有:

module.exports = function(environment) {
  environment = 'production';
  var ENV = {
    APP: {
      API_HOST: 'https://apihost1.com,
      secret: 'key1'
     }
   };
  return ENV;
};

我如何将“APP”对象动态更改为其他对象:

    APP: {
      API_HOST: 'https://apihost2.com,
      secret: 'key2'
     }

在根据我的 package.json 中的执行命令构建之前?

"scripts": {
    "build": "$CONFIG_NAME ember build",
},

我正在考虑 npm 脚本,但无法实现。有人有解决方案吗?

标签: ember.jsember-clinpm-scripts

解决方案


你可以做这样的事情config/environment

const customConfig = require(`./config.${process.env.CONFIG_NAME}.json`);

module.exports = function(environment) {
  environment = 'production';
  var ENV = {
    APP: {
      ...customConfig,
      otherStuff: 'bla'
     }
   };
  return ENV;
};

然后,env CONFIG_NAME=foo ember build如果您想在构建期间将 的内容合并config/config.foo.json到中,则可以运行。ENV.APP

envtho 是 unix 的东西,这将适用于 Linux 和 MacOS 以及其他 unix 系统。

对于 Windows,您可以使用 PowerShell 设置 env 变量或安装cross-env并执行npm run cross-env CONFIG_NAME=foo ember build.


推荐阅读