В чем разница между использованием встроенного инструментария Angular CLI, LernaJS и ng-packagr? - PullRequest
1 голос
/ 27 марта 2019

Я не новичок в Angular, но я новичок в написании своих собственных библиотек компонентов Angular, поэтому я пытался узнать больше о том, как создавать свои собственные библиотеки и делать их доступными через npm. До сих пор я нашел 3 инструмента, которые, кажется, имеют много сообщества / интереса вокруг них.

  1. LernaJS
  2. нг-packagr
  3. Native Angular CLI

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

Тогда есть ng-packagr, который, как я вижу, имеет большое сообщество соавторов, и я нашел пару учебных пособий и статей о том, как использовать ng-packagr для создания всех типов модулей, необходимых для различных сценариев ( ESM, FESM, AMD, UMD и т. Д.). Мои первые попытки использования этого инструмента не увенчались успехом, так как у меня были проблемы с копированием файлов package.json в папку dist, которые могли бы изменить относительные пути и вызвать проблемы. Я уверен, что это была проблема с моей стороны, а не проблема с инструментом.

Наконец, есть встроенный Angular CLI, который позволяет вам использовать ng new [workspace-name] --create-application=false, который создаст «пустое» рабочее пространство Angular, чтобы начать сборку библиотек. Внутри этого рабочего пространства я могу затем использовать ng generate library [name] для создания своих библиотек и, наконец, ng generate application [name] для создания приложения «песочницы», размещенного на localhost:4200, которое я могу использовать для тестирования библиотек компонентов.

В моем ограниченном опыте третий вариант, казалось, работал лучше всего для меня. У меня не возникло проблем с получением интерфейса командной строки для генерации библиотек и с тем, чтобы приложение «песочница» импортировало эти модули / компоненты и соответственно их использовало. Это также родной инструмент Angular, поэтому я знаю, что он всегда будет следовать правилам Angular, что мне нравится.

Итак, мой вопрос: есть ли еще преимущества в использовании LernaJS и / или ng-packagr или это были просто решения этой проблемы до того, как Angular создала собственное решение?

...