Библиотека угловых подач

В последних версиях Angular Cli мы можем использовать ng g library lib-name Команда для создания библиотеки. Как упомянуто в Angular Docs:

ng serve <project>

А также:

<project>   The name of the project to build. Can be an app or a library.

Итак, мы можем обслуживать библиотеку. Но когда я служу, я получаю следующие ошибки:

Project 'ngx-tab-component' does not support the 'serve' target.
Error: Project 'ngx-tab-component' does not support the 'serve' target.
at ServeCommand.initialize (C:\Users\vahidnajafi\angular\ngx-tab-app\node_modules\@angular\cli\models\architect-command.js:53:19)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
at Function.Module.runMain (module.js:695:11)
at startup (bootstrap_node.js:191:16)
at bootstrap_node.js:612:3

4 ответа

Решение

Проект, в котором вы генерируете свою библиотеку, служит хостом для отладки и тестирования.

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

Примечание: вы должны импортировать projects/foo-lib/src/public_api , но не 'dist / foo-lib'

Используйте ваше официальное название библиотеки, например @foo/foo-library Угловой найдет его в правильном месте.

Вы можете обновить путь в главном tsconfig.json из

"paths": {
  "library": {
    "dist/library"
  }
}

к

"paths": {
  "library": {
    "projects/library/src/public-api"
  }
}

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

Наконец-то нашел решение.

Сначала я наблюдаю за созданной версией библиотеки следующим образом (предоставлено в Angular Cli 6.2):

ng build foo-lib --watch

Тогда я подаю заявку просто:

ng serve

И я импортирую модуль из dist каталог (потому что я могу смотреть на встроенную версию):

import { FooLibModule } from 'dist/foo-lib';

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

Кажется, процесс немного сложен.

Некоторые ответы предлагаютng build mylib --watchваша библиотека, а затем, но я чувствую себя немного неуклюже. Я хочу, чтобы что-то запускалось, просто делаяng serveи ничего больше.

Вот решение, которое я придумал, оно отлично работает в Angular 15 (с рабочей областью для нескольких проектов).

      - libs/common-lib
- projects/firstApp
- projects/secondApp
- tsconfig.json

В общем, мне пришлось изменитьtsconfig.jsonв корне проекта.

От:

      "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "common-lib": [
        "dist/common-lib",
      ]
    },

К:

      "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "common-lib": [
        "libs/common-lib/src/public-api",
      ]
    },
Другие вопросы по тегам