Разверните приложение Angular 6 с библиотекой компонентов

Я создал приложение Angular 6, состоящее из библиотеки, содержащей компоненты, которые следует повторно использовать в будущем, и приложения. Я создал все с помощью angular cli, поэтому у меня есть структура по умолчанию.

my-app
 |
 +-projects
 |   |
 |   +-my-lib
 |      |
 |      +-src
 |      +-package.json
 |
 +-src
 +-package.json

Чтобы собрать проект, я сначала создаю библиотеку, используя ng build my-lib --prod, а затем создаю приложение, используя ng build --prod. После этого каталог dist выглядит так

dist
 |
 +-my-app
 +-my-lib

Теперь мой вопрос заключается в том, как развернуть это на моем сервере, чтобы приложение имело доступ к библиотеке. Локально все работает, так что я должен просто перенести весь каталог dist на свой сервер, как обычно? Или я должен опубликовать библиотеку в npm и добавить ее как обычную зависимость к моему файлу package.json. И если да, то как мне это настроить, чтобы не мешать локальной разработке, где я хочу собрать библиотеку из каталога dist?


person user1839433    schedule 26.07.2018    source источник
comment
Я бы, вероятно, опубликовал на npm, так что любой может получить из npm. Я думаю, что с angular 6 теперь вы можете упаковывать и публиковать проще, noreferrer">blog.angularindepth.com/ или с помощью библиотеки npm с именем ngpackagr npmjs. com/package/ng-packagr   -  person Taranjit Kang    schedule 26.07.2018
comment
Да, это не было бы проблемой, однако мне пришлось бы добавить библиотеку в качестве зависимости npm к моему package.json, что означает, что для локальных тестовых сборок она также будет собираться для версии npm. Тогда мне нужно было бы иметь два package.json s   -  person user1839433    schedule 26.07.2018


Ответы (1)


Ваша сборка my-app уже содержит библиотеку my-lib, поэтому ее должно быть достаточно для развертывания только dist/my-app.

Что касается публикации в npm, это действительно зависит от вас.

Для локальной разработки можно использовать npm link:

  1. cd dist/my-lib
  2. нпм-ссылка
  3. cd в/ваш/проект/каталог
  4. npm связать имя вашей библиотеки (вероятно, my-lib)

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

Однако из моего опыта, когда вы обновляете или устанавливаете другие «обычные» пакеты, вы должны снова сделать ссылку.

person PeS    schedule 26.07.2018
comment
Это было бы прекрасно. Я попробую развернуть само приложение. npm link не требуется в новейшей версии angular cli. Добавления lib в качестве библиотеки в angular.json достаточно для сборки всего проекта. - person user1839433; 26.07.2018
comment
Наконец-то у меня появилась возможность протестировать это, и библиотека действительно включена в пакет my-app. Большое тебе спасибо - person user1839433; 30.07.2018