Настройка: Angular 9 рабочее пространство с библиотеками, тестовым приложением и сборником рассказов с использованием CDK _overlay.scss
в файле .scss
с @use
.
.storybook/
node_modules/
projects/
- library/
- src/
- lib/
- component/
component.scss // `@use`s `_overlay.scss`
ng-package.json
- test-app/
angular.json
Проблема: При использовании наложения sass mixin @use "~@angular/cdk/overlay"
тестовое приложение и сборник рассказов компилируются, но ng-packagr не может найти _overlay.scss
.
ERROR: Can't find stylesheet to import.
╷
2 │ @use "~@angular/cdk/overlay";
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
╵
projects\library\src\lib\component\component.scss 2:1 root stylesheet
An unhandled exception occurred: Can't find stylesheet to import.
Обходные пути:
- Можно добавить
node_modules/
к массиву "styleIncludePaths": "["../../node_modules"]"
ng-package.json
и импортировать миксин наложения, например @use "@angular/cdk/overlay"
, но тогда он не работает с тестовым приложением или сборником рассказов; кроме того, среда IDE не может определить путь. @use "overlay"
, "styleIncludePaths": ["../../node_modules/@angular/cdk"]
и "stylePreprocessorOptions": {"includePaths": ["node_modules/@angular/cdk"]}
работают для тестового приложения и сборки библиотеки, но не для сборника рассказов; кроме того, IDE не может разрешить путь. Возможно, сборник рассказов можно настроить для работы с этой настройкой. - Изменение пути на
@use "../../../../../node_modules/@angular/cdk/overlay"
работает во время разработки, но не удастся в производстве, когда кто-то попытается добавить библиотеку в свои node_modules и @use
миксин. - Копирование
_overlay.scss
в библиотеку будет работать, но его нужно будет обновлять при каждом изменении cdk. - Предоставление настраиваемого webpack.config, возможно, сработает, но его нужно будет обновить, если angular скрытые изменения.
Q: Разве импорт с тильдой ~
не должен работать, если "styleIncludePaths": ["../../node_modules/"]
установлен в ng-package.json
? Это проблема с ng-packagr?