Как скрыть раздел в .hbs и .js при создании производственной сборки ember

Наше приложение Ember разработано в версии 2.8, и мы следуем структуре POD.

Мы создаем две разные сборки, как показано ниже.

1) Для нашего сервера разработки: без изменений в коде, просто создайте

2) Для нашего тестового сервера: удалите раздел в HBS, а также удалите маршрут из router.js, затем выполните сборку

И мы берем сборку с помощью "npm run-scripts build", которая настроена в нашем package.json, как показано ниже.

"scripts": {
    "build": "ember build",
    "start": "ember server",
    "test" : "ember test"
  },

Я хотел бы знать в ember 2.8v, могу ли я записать условие для удаления раздела на основе build.

Например, если я дам npm run-scripts buildDev, он будет выполнять обычную сборку

и если я дам npm run-scripts buildTest, он выполнит удаление разделов и даст сборку

но в package.json оба будут настроены как

"scripts": {
    "build"    : "ember build",
    "buildDev" : "ember build --environment=production",
    "buildTest": "ember build --environment=production",
    "start": "ember server",
    "test" : "ember test"
  },

1 ответ

Вы хотите только отключить раздел или вам нужно удалить его из сборки?

Это довольно просто, если вы хотите только что-то отключить:

Сначала вы можете использовать переменные среды в своем config/environment.js. Так что примерно так:

if(process.env.DEV_BUILD) {
  ENV.disableSomething = true;
}

В твоем package.json вы могли бы сделать это:

"build": "cross-env DEV_BUILD=1 ember build",

Это использует cross-env для установки переменной env в системах windows и *nix.

Затем вы можете импортировать конфигурацию и использовать ее:

import ENV from 'hss/config/environment';

...

if(!ENV.disableSomething) {
  this.route('foo');
}

...

Однако, если вы действительно хотите удалить какой-то код, вы можете написать свой собственный аддон, чтобы заменить некоторую переменную на true или false. тогда минификатор удалит код.

Другие вопросы по тегам