Использование сопоставления путей в tsconfig с Angular CLI - PullRequest
0 голосов
/ 02 мая 2018

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

Состав:

mycompany-mylib/
src/
tsconfig.json

Я добавил следующее к своему tsconfig.json

{      
  "compilerOptions": {
    ...
    "baseUrl": ".",
    "paths": {
        "@mycompany/mylib": ["mycompany-mylib/lib/src/public_api"],
    }
  }
}

Эта конфигурация кажется правильной, и Typescript может разрешить эти пути, так как я не получаю ошибок и полной интеллигенции в коде Visual Studio.

Например:

import { UserClientModule } from '@mycompany/mylib'

Однако, когда я запускаю ng serve или ng serve --aot, я получаю ошибку, что модуль не был найден (Моя версия AngularCLI 1.7.4 ):

ERROR in src/app/core/components/user-profile/user-profile.component.ts(5,43): error TS2307: Cannot find module '@mycompany/mylib'.

Эта техника должна работать, так как есть несколько постов в блоге и ссылки на github. Я просто не вижу, что я делаю не так. Я могу исправить это в веб-пакете, предоставив псевдоним configuraton, но, поскольку в angular cli нет webpack.config.js, я не могу этого сделать.

1 Ответ

0 голосов
/ 02 мая 2018

Я смог это исправить сам. В Angular CLI по умолчанию используется другая конфигурация: ./src/tsconfig.app.json, я тоже добавил туда свою конфигурацию и немного изменил пути следующим образом:

{      
  "compilerOptions": {
    ...
    "baseUrl": "./",
    "paths": {
        "@mycompany/mylib": ["../mycompany-mylib/lib/src/public_api"],
    }
  }
}

Теперь он хорошо компилируется, если в mycompany-mylib нет папки node_modules. Я все еще благодарен за решение этой проблемы.

...