IntelliJ и AngularCLI 6 - импортировать библиотеку по имени пакета

У меня есть проект Angular CLI 6, содержащий 2 компонента:

  • библиотека с сервисами/компонентами
  • проект, который использует эту библиотеку

Когда я хочу использовать библиотеку во внешнем проекте, я должен использовать, например:

import { SomeLibModule } from "some-lib";

Вместо этого с IntelliJ, когда я использую функцию автоматического импорта (т.е. я набираю SomeLibModule и нажимаю Alt + Enter), указанный импорт:

import {SomeLibModule} from '../../projects/some-lib/src/lib/some-lib.module';

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

Вот простой репозиторий для воспроизведения этого поведения: https://github.com/lbar/ngcli-with-lib (импорт библиотеки находится в app.module.ts).

Спасибо.


person lbar    schedule 06.07.2018    source источник


Ответы (1)


Вы можете попробовать добавить еще одно сопоставление путей к вашему tsconfig.json:

"paths": {
      "some-lib": [
        "dist/some-lib",
        "projects/some-lib/src/lib/some-lib.module"
      ],
      "some-lib/*": [
        "dist/some-lib/*"
      ]
    }
person lena    schedule 08.07.2018
comment
Я попробовал ваше предложение: оно хорошо работает, когда я работаю над проектом, в котором используется упакованная библиотека. Но есть побочный эффект: когда я в самой библиотеке, импорт не должен быть "some-lib". - person lbar; 09.07.2018
comment
Если я переместил код, который вы предлагаете, в tsconfig.app.json клиентского проекта, импорт будет правильным в проекте и в библиотеке. Просто раздражает повторять это в каждом клиентском проекте, но если у меня нет выбора... - person lbar; 09.07.2018
comment
вам нужно каким-то образом сообщить IDE, что ваш локальный модуль должен быть импортирован, как если бы он был опубликованным модулем узла; Кажется, указание сопоставления путей в tsconfig - единственный способ сделать это - person lena; 09.07.2018