Как запустить мой скрипт узла как одну из задач сборки ember? - PullRequest
1 голос
/ 05 июля 2019

Я работаю в приложении ember.Из того, что я понял, он строит приложение с использованием брокколи.У меня есть требование, когда мне нужно обработать некоторые файлы в приложении, запустив скрипт узла перед началом процесса сборки.Теперь я запускаю скрипт узла отдельно, а затем запускаю сервер ember.Как правильно достичь этого?Могу ли я сделать это как одну из задач в процессе сборки ember?Где мне хранить файл узла в каталоге?

Ответы [ 3 ]

0 голосов
/ 05 июля 2019

Я бы порекомендовал аддон in-repo , который реализует preBuild или postBuild Ember CLI Addon hooks.Перехват аддонов плохо документирован, но есть другие примеры использования других аддонов.Например, ember-cli-deploy-build-plus использует хук postBuild для удаления некоторых файлов из результатов сборки.

Более продвинутым вариантом будет реализация плагина broccoli и его использование вtreeFor* крючок.Это особенно важно, если ваш пользовательский скрипт должен добавлять / удалять файлы из сборки.ember-cli-addon-docs является отличным примером для этого использования.

0 голосов
/ 16 июля 2019

Более простым решением может быть вызов функции из вашего скрипта сборки в ember-cli-build.js где-то до return app.toTree();

let my_build_script = require('./lib/my-build-script.js');

await my_build_script();

return app.toTree();

Некоторые недостатки этого подхода включают в себя:

  1. что он не будет запущен как один из многих параллельных процессов, если это возможно на вашей машине.
  2. Он не будет работать асинхронно с остальной частью сборки, вместо этого вам придется подождать, пока это не будет сделано, чтобы начать сборку.

Скорее всего, вам придется изменить скрипт компоновки, чтобы он возвращал функцию, которую вы можете вызвать, и заставить ее вернуть обещание, когда она будет завершена.

0 голосов
/ 05 июля 2019

Что ж, одним из решений было бы использование аддона in-repo , так как перехватчики аддона дают много дополнительных точек для настройки, чем я знаю, чем ember-cli-build.js (насколько я знаю ).

Если вы хотите выйти за рамки встроенных настроек или хотите / нужно больше расширенный контроль в целом, ниже приведены некоторые из крючков (ключи), доступные для вашего аддона Object в файле index.js. Все крючки ожидайте функцию в качестве значения.

includedCommands: function() {},
blueprintsPath: // return path as String
preBuild:
postBuild:
treeFor:
contentFor:
included:
postprocessTree:
serverMiddleware:
lintTree:

В вашем случае preBuild звучит как билет:

Этот хук вызывается перед сборкой.

Вы можете require() любые файлы, которые вам нужны от index.js

...