Импорт публикуемой библиотеки в другую библиотеку Fails Angular - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь найти исправление для импорта libs в Angular.

Я слежу за этим открытым вопросом на github .

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

Шаги, которые я пробовал

1) Импортв tsconfig.lib.json в соответствии с открытой проблемой на github в параметрах компилятора

Импорт в NgModule неопубликованной библиотеки lib

import {MyWidgetsModule} from "../../../my-widgets/src/lib/my-widgets.module";

даже при попытке с

import {MyWidgetsModule} from "my-widgets";




    "paths": {
      "my-widgets/*": [
        "dist/my-widgets/*"
      ]
    }
  },

Стек ошибок

Предполагается, что rootDir будет содержать все исходные файлы.

2)

Если я удаляю импорт модуля в ngModule, я получаю сообщение об ошибке, как не могу найти модуль.

Примечание

Мой главный файл tsconfig содержит все необходимые импортные данные.

Я строю обе библиотеки с помощью команды Angular cli ng g library <name>

Редактировать

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "baseUrl": "src",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2016",
      "dom"
    ],
    "paths": {
      "my-widgets": [
        "dist/my-widgets"
      ],
      "my-widgets/*": [
        "dist/my-widgets/*"
      ],
      "my-widgets-extn": [
        "dist/my-widgets-extn"
      ],
      "my-widgets-extn/*": [
        "dist/my-widgets-extn/*"
      ],
      "my-framework": [
        "dist/my-framework"
      ],
      "my-framework/*": [
        "dist/my-framework/*"
      ],
      "my-framework-extn": [
        "dist/my-framework-extn"
      ],
      "my-framework-extn/*": [
        "dist/my-framework-extn/*"
      ]
    }
  }
}

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

1 Ответ

0 голосов
/ 14 марта 2019

Я считаю, что проблема просто в пути.Вы написали baseUrl как src, но вы пишете paths, как если бы это было ./.Скажем вот структура вашего рабочего пространства:

dist/my-widgets (compiled)
projects/my-widgets (TS)
projects/my-app (ts)
tsconfig.json

Вы можете иметь это в своем my-приложении:

import {MyWidgetsModule} from "my-widgets";

И в tsconfig вам нужно добавить пути:

"baseUrl": "./",
"paths": {
  "my-widgets": [
    "dist/my-widgets"
  ]
}

Или, если вы хотите использовать не скомпилированную версию, вы можете отредактировать ее и ng serve забрать изменения:

"baseUrl": "./",
"paths": {
  "my-widgets": [
    "projects/my-widgets/src/public-api"
  ]
}

По умолчанию это также зависит от точек входа в библиотеку.Полагаю, angular cli создает его так, как я писал выше, собирая все импортируемые элементы внутри src/public-api.ts.

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