Я использую Angular 8, и у меня есть отдельное приложение со своими собственными стилями и ресурсами CSS. Я хочу встроить компонент библиотеки в основное приложение, например
<lib-landing-page-preview></landing-page-preview>
Структура каталогов
Ресурсы библиотеки находятся внутри /projects/landing-page-preview/src/assets
, где style.scss
- это основной файл CSS внутри каталога scss
.
Корневой angular.json
файл обновлен
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
... // main application project
"landing-page-preview": {
"projectType": "library",
"root": "projects/landing-page-preview",
"sourceRoot": "projects/landing-page-preview/src",
"prefix": "lib",
"architect": {
"build": {
"builder": "@angular-devkit/build-ng-packagr:build",
"options": {
"tsConfig": "projects/landing-page-preview/tsconfig.lib.json",
"project": "projects/landing-page-preview/ng-package.json",
"assets": [
{
"glob": "*/*",
"input": "projects/landing-page-preview/src/assets",
"output": "src/assets"
}
]
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "projects/landing-page-preview/src/test.ts",
"tsConfig": "projects/landing-page-preview/tsconfig.spec.json",
"karmaConfig": "projects/landing-page-preview/karma.conf.js"
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"projects/landing-page-preview/tsconfig.lib.json",
"projects/landing-page-preview/tsconfig.spec.json"
],
"exclude": [
"**/node_modules/**"
]
}
}
}
}},
"defaultProject": "qcg-frontend"
}
Во время разработки я создаю библиотеку с помощью следующей команды
ng build landing-page-preview --watch
и запускаем основное приложение с помощью
ng serve
Но файлы ресурсов в каталоге библиотеки не работают.
Команда ng build landing-page-preview --watch
дает
Schema validation failed with the following errors:
Data path "" should NOT have additional properties(assets).