Библиотека угловых подач
В последних версиях 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",
]
},