Nx и угловой: разрешить зависимость в модуле

#angular #nrwl-nx #nrwl

#угловой #nrwl-nx #nrwl

Вопрос:

Мой план состоял в том, чтобы использовать модули, связанные с NgRx (магазин, эффекты, средства разработки и т. Д.), В модуле библиотеки, а не в модуле приложения.

Модули, связанные с NgRx, импортируются в libs/…/shell-модуль, который, в свою очередь, импортируется в модуль приложений.

**ПРОБЛЕМА:**
Я хотел бы предоставить переменную environment.production в своих библиотеках, но я понятия не имею, как получить ее в оболочке-модуле без использования относительного/абсолютного пути импорта.

библиотеки/…/shell.module.ts

 import { environment } from '../../../../../../../apps/test-app/src/environments/environment';  imports:[ ... !environment.production ? StoreDevtoolsModule.instrument() : [] ... ]  

**ВОПРОСЫ:**

  1. Невозможно ли разрешить переменную environment.production в угловом модуле?
    Я знаю, как вводить материал в компоненты, но как вы вводите его в модули?
    Трюк с конфигурацией .forRoot() не сработал, потому что массив импорта в декораторе модуля выходит за рамки класса модуля.
  2. есть ли другой способ сделать это без тесной связи файла environment.ts и модулей моих библиотек?
  3. Определение пути » @ » для environment.ts в файле tsconfig.json, а затем его импорт в модуль по-прежнему считается тесной связью … верно?

Ответ №1:

для этого я бы вообще рекомендовал перенести конфигурацию среды также в библиотеку.

Например, у вас может быть libs/shared/env/environment.*.ts , или libs/domain/env/environment.*.ts . Вам нужно будет обновить шаги сборки для вашего приложения, чтобы убедиться, что fileReplacements настроен для их обработки. Затем в вашем приложении вы можете использовать import {environment} from '@company/shared/eng' .

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

Комментарии:

1. Привет, Крейгори, я думал об этом. Однако не будет ли это «нарушением рекомендуемой структуры проекта Angular/Nx»? И, возможно, приведут к ненужным проблемам в долгосрочной перспективе?

2. Я не думаю, что это нарушило бы структуру больше, чем любые другие основные разделяемые библиотеки.

3. Я сделал это, и я получаю эту ошибку: «Проекты должны использовать относительный импорт для импорта из других файлов в рамках того же проекта. Используйте «./путь/к/файлу» вместо» импорт из…». Ошибка присутствует даже после перезапуска сервера ESLint.