Angular CLI - обнаружение изменений библиотеки для восстановления потребляющего приложения

Я разрабатываю библиотеку Angular и использую типичную настройку, при которой у меня есть проект моей библиотеки, а затем другой проект, в котором я использую выходные данные встроенной библиотеки.

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

В случае, если мое приложение обнаруживает изменения библиотеки, я считаю, что это уже настроено, поскольку ng serve автоматически отслеживает изменения файлов, а в tsconfig для моего приложения путь к моей библиотеке отображается в папку dist, в которой создается вывод библиотеки . Если я вручную изменю один из этих файлов в папке dist, запускается перестройка моего потребляющего приложения, и эта часть работает нормально.

В случае отслеживания изменений библиотеки, я видел, что могу указать имя моей библиотеки и флаг наблюдения как часть команды сборки, поэтому:

ng build my-lib --watch

В моем package.json определены следующие сценарии:

"start": "npm run build && ng serve",
"build": "ng build && npm run bundle-styles",
"bundle-styles": "scss-bundle -c scss-bundle.config.json"

Я предполагаю, что мне понадобятся часы в моей библиотеке, созданные в отдельном процессе, поэтому мне может понадобиться дополнительный скрипт в моей задаче, предназначенный только для создания и просмотра моей библиотеки?

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

Я действительно пытался это сделать, но у меня возникла проблема с моей bundle-styles задачей, которую мне нужно выполнить после того, как angular cli построит ее, но до того, как она начнет следить за изменениями. Я начинаю думать, что мне может потребоваться создать свою собственную задачу просмотра с чем-то вроде gulp

Какой здесь правильный подход при разработке изменений в библиотеке, чтобы увидеть, как они обнаруживаются и восстанавливаются в приложении-потребителе?

Спасибо


person mindparse    schedule 29.04.2019    source источник


Ответы (1)


Для простых приложений ваша существующая настройка верна. При загрузке приложения я создаю два процесса: один создает библиотеку с --watch, а другой обслуживает мое основное приложение. Но если вы начнете делать сложные вещи, такие как задача стилей пакета, или если вы обнаружите ng serve разрывы, когда добавляете компонент библиотеки, а затем ссылаетесь на него в модуле с отложенной загрузкой (что происходит в моем проекте), вам следует укусить пулю и написать собственный сценарий. В моем случае мне нужно получить вывод от ng build lib-name --watch, и если я узнаю об ошибке компиляции, я могу сначала перезапустить процесс сборки, и, если ошибка компиляции все еще есть, уведомить себя об ошибке. Точно так же мне часто нужно повторно обслуживать основное приложение при изменении библиотеки, поэтому, когда больше нет ошибок при восстановлении библиотеки, я перезапускаю свой ng serve процесс.

Я знаю, что это не идеально, но существующие ng параметры просто не помогут, если вы хотите сделать что-то, что команда Angular не разработала сама.

person Community    schedule 03.10.2019
comment
не могли бы вы поделиться любым примером кастомного скрипта. Мне тоже нужно делать похожие вещи. - person yogen darji; 27.05.2020
comment
Я поддерживаю эту просьбу - person Evgeny A.; 01.10.2020