Как исключить компонент в сборке ember

Краткое объяснение:

Как исключить все component.hbs, component.hbs.js а также this.route('component) упомянуть в router.js связанные с компонентом при сборке ember.

Длинное объяснение:

Подумайте, что у вас есть компонент в вашем ember-приложении, который вы хотите, чтобы он был доступен только в среде разработки (пока не будем беспокоиться о том, насколько хорош этот подход!!), и его нужно удалить при сборке для производства.

Я попробовал несколько ember-cli плагины ( воронка брокколи, Ember-Cli-воронка), которая исключает component.hbs.js файл, но я все еще вижу ссылки на component.hbs а также this.route('component') в скомпилированном файле JS в /dist папка.

2 ответа

Есть два возможных варианта, которые будут полезны для вас:

Самый быстрый способ - установить Ember-Cli-Tree-Shaker. В вашем файле ember-cli-build.js вы можете включить [exclude] массив файлов, пути к которым всегда нужно удалить. Тем не менее, это экспериментальный проект, и следуйте всем оговоркам на сайте.

Более длительный, но потенциально более стабильный способ удаления компонента из сборки состоит в создании дополнения в репо и в этом дополнении. index.js файл, компоненты фильтра в treeForAddon() а также treeForAddonTemplates() крючки. Вот пример: https://github.com/kaliber5/ember-bootstrap/blob/master/index.js#L282

У вас есть несколько вариантов:

  1. Не исключайте файлы или код, но отключите с помощью дополнения ember-feature-flags

Отличное дополнение: https://github.com/kategengler/ember-feature-flags

  1. Исключить файлы из сборки

Как уже упоминалось Педро, вы можете оформить заказ ember-composable-helpers для этого. Они, кажется, раздеть файлы в index.js#treeForAddon, https://github.com/DockYard/ember-composable-helpers/blob/master/index.js#L28-L33

Это также может помочь: Поместите для размещения ресурсов для dev/test в emberjs

  1. Исключить код из сборки

Может быть немного сложнее... вы можете проверить, как Ember делает это с их функциональными флагами (хотя, я не уверен, что они используют defeatureify или же babel-plugin-filter-imports) * Ember Feature Flags: https://guides.emberjs.com/release/configuring-ember/feature-flags/

Надеюсь это поможет!

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