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

时间:2015-01-28 17:47:29

标签: ember.js ember-cli broccolijs

我有一个配置设置我想要包含在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中导入/包含 custom.js ,并使用其路径属性?我尝试导入,但得到:

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

1 个答案:

答案 0 :(得分:3)

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

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

如果你真的想在Brocfile中导入一些东西,你需要使用像require.js这样的模块加载器:

var Config = require('path/to/config.js');`

...然后在你path/to/config.js档案中:

module.exports = {
  // Options here
}

资产修订

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