Angular не трясет дерево nx lib, который содержит клиент (angular) и код сервера - PullRequest
0 голосов
/ 06 февраля 2020

Я использую рабочее пространство nrwl nx. У меня есть библиотека рабочего пространства (libs/jobs), которая содержит все логи c моего модуля "работа". Он содержит код на стороне сервера, а также модуль angular. Модуль angular не имеет зависимостей от кода сервера, но если я загружаю модуль через import('@reporting/jobs').then(m => m.JobsClientModule), он завершается сбоем, потому что не может найти узел apis, такой как fs во время компиляции.

Я думал, что дрожание дерева будет устранить неиспользуемый код сервера. Почему бы и нет?

Мой текущий способ - добавить новую запись в tsconfig.json -> path: "@reporting/jobs-client": ["libs/jobs/src/client/index.ts"]. Который импортирует только клиентские вещи из модуля. Но это выглядит довольно странно: (

Есть предложения, как создать lib / модуль, содержащий весь код (сервер и клиент) для одной функции?

1 Ответ

1 голос
/ 11 февраля 2020

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

WebPack найдет весь импорт ('') и создаст для них точки входа. Поэтому я не думаю, что у angular есть способ волшебным образом исправить это.

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

То, что я сделал в нашем репо, - это разделил модули, содержащие код клиента и сервера, на несколько библиотек.

Примерно так:

// contains the business logic / interfaces that can be used both client and server side. (cannot contain any node imports)
@reporting/jobs/domain

// the angular feature module that contains routing and can be lazy loaded via loadChildren
@reporting/jobs/feature-job-dashboard

// the cloud function that gets invoked by cloud scheduler
@reporting/jobs/backend-scheduled-import

Я нахожу сильно Разделение деталей реализации бэкэнда и внешнего интерфейса облегчает поиск asp того, что запускается, и, как следствие, упрощает тестирование кода. но довольно сложно выбрать, когда создавать новых библиотек.

Удачи:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...