Ember-CLI: включить файл приложения в 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
    }
  };
}

Как импортировать/включить custom.js в мой Brocfile и использовать его свойство 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
    }
  };
}

person yuяi    schedule 28.01.2015    source источник


Ответы (1)


Вы получаете сообщение об ошибке, потому что Brocfile.js не анализируется парсером ES6. Это связано с тем, что файл Brocfile не находится в дереве вашего приложения (каталог приложения). Поэтому вы не можете использовать такой синтаксис, как import в файле Brocfile.

Ваш Brocfile используется для сборки приложения. Переменные среды, такие как те, которые вы устанавливаете внутри if (process.env.EMBER_ENV === 'development'), должны находиться в файле Ember CLI config/environment.js. Любые свойства в объекте ENV.APP environment.js передаются экземпляру вашего приложения и надстройкам. Таким образом, в зависимости от вашей конечной цели, вы можете использовать этот подход без необходимости импорта в Brocfile.

Если вы действительно хотите что-то импортировать в свой Brocfile, вам нужно будет использовать загрузчик модулей, например, require.js:

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

... И затем в вашем path/to/config.js файле:

module.exports = {
  // Options here
}

Ревизия актива

Глядя на ваш вариант использования, вы можете взглянуть на дополнение Broccoli, например broccoli-asset-rev делать за тебя тяжелую работу.

person Duncan Walker    schedule 28.01.2015
comment
К сожалению, выполнение запроса require для файла в каталоге приложения приводит к ошибке Не удается найти модуль. И использование надстройки broccoli-asset-rev не решает проблему. Я уже использую аналогичный компонент, и мне нужно иметь возможность вставлять переменную вместо жестко запрограммированных значений. - person yuяi; 29.01.2015
comment
Файл, который вы пытаетесь импортировать с помощью require, должен использовать в нем правильный синтаксис модуля (обратите внимание — не синтаксис модуля ES6). Обычно это означает определение объекта как module.exports в файле по адресу path/to/config.js. Тогда вы сможете без проблем импортировать его — на самом деле Ember CLI делает это в схеме Brocfile. Какую версию Ember CLI вы используете? - person Duncan Walker; 29.01.2015
comment
Я попытаюсь изменить синтаксис моего файла конфигурации. Как вы можете видеть в вопросе, в настоящее время я использую синтаксис модуля ES6. Я использую Ember-CLI 0.1.7. - person yuяi; 29.01.2015
comment
Использование module.exports помогло. Если вы обновите свой ответ, включив в него этот бит, я приму его. - person yuяi; 29.01.2015