余烬;有条件地启动实例初始化程序

EmberJs; conditionally start instance initializer

是否可以根据环境变量有条件地 运行 实例初始化程序?

用例:我的本地计算机上有一个 Ember 应用 运行ning。如果应用程序启动时存在某个环境变量,我想启动一个名为 "lights" 的服务。如果它不存在,我不希望服务 运行。

//instance-intializers/lights.js
 export default {
  name: 'lights',
  initialize(application) {
  application.container.lookup('service:lights');
 }
};

好吧,如果你想在构建过程中检测环境变量,那并不难。您可以只编写 in-repo-addon 并使用 preprocessTree 挂钩来添加或删除初始化程序。你在节点环境中,所以你可以访问你需要的一切。

一个不错的方法是将其从构建中删除。 (正如勒克斯在他的回答中提到的那样。)

一种快速的方法是获取环境变量并进行检查,例如:

//instance-intializers/lights.js
export default {
  name: 'lights',
  initialize(application) {
    let env = application.resolveRegistration('config:environment');
    if(env === ''){
      application.lookup('service:lights');
      //... do whatever you want...
    }
  }
};