Ember-CLI:在 Brocfile.js 中包含应用程序文件

Ember-CLI: include app file in Brocfile.js

我有一个配置设置要包含在 Brocfile.js 中,这样我就不会直接在文件中设置它。例如,在 config/custom.js 我会有这样的东西:

export default {
  path: 'http://abc.blah.com/'
};

在我的 Brocfile 中,我想做类似的事情:

if (process.env.EMBER_ENV === 'development') {
  app.options.inlineContent = {
    assetPrefix: {
      content: customConfig.path
    }
  };
}

如何在我的 Brocfile 中 import/include custom.js 并使用它的 path 属性?我尝试导入,但得到:

import config from 'config/custom.js';
^^^^^^
Unexpected reserved word

更新:

根据下面的回答,我的文件最终看起来像这样:

// config/custom.js

module.exports = {
  assetPrependPath: 'http://abc.blah.com/'
};


// Brocfile.js

var customConfig = require('./config/custom');

...

if (process.env.EMBER_ENV === 'development') {
  app.options.inlineContent = {
    assetPrefix: {
      content:  customConfig.assetPrependPath
    }
  };
}

你收到错误是因为 Brocfile.js 没有被 ES6 解析器解析。这是因为 Brocfile 不在您的应用程序树(应用程序目录)中。因此,您不能在 Brocfile 中使用类似 import 的语法。

您的 Brocfile 用于构建应用程序。环境特定变量,例如您在 if (process.env.EMBER_ENV === 'development') 中设置的变量,应该放入 Ember CLI 的 config/environment.js 文件中。 environment.jsENV.APP 对象中的任何属性都会传递给您的应用程序实例和插件。因此,根据您的最终目标,您可以采用这种方法而无需导入 Brocfile。

如果你真的想将某些东西导入到你的 Brocfile 中,你将需要使用像 require.js:

这样的模块加载器
var Config = require('path/to/config.js');`

... 然后在你的 path/to/config.js 文件中:

module.exports = {
  // Options here
}

资产修订

查看您的用例,您可能想要查看像 broccoli-asset-rev 这样的 Broccoli 插件来为您完成繁重的工作。