Ember Js:如何将数据动态注入到 ENV 中?

EmberJs: how to dynamicaly inject data into 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 脚本,但无法实现。 有人有解决方案吗?

你可以在 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 中。

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

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