Для глобальных стилей я ответил на этот вопрос в на этот вопрос .
Для смесей и переменных также есть обходной путь.
- Создайте
index.scss
файл в корневой папке вашей библиотеки.Если вы следуете этому руководству из Angular , тогда ваш путь будет my-project/projects/my-library/index.scss
.Это также папка, в которой находится package.json
.
Таким образом, index.scss
будет файлом с вашими переменными и миксинами
$grey: #222;
@mixin mymixin {
background: #222;
}
Включите это в свои файлы scss библиотеки, используя
import
@import '../../index.scss';
или любой другой относительный путь, по которому находится ваш компонентный файл scss.
Теперь, чтобы этот файл был в вашем проекте приложения, скопируйте его после сборки в каталог dist.Для этого отредактируйте файл
package.json
проекта вашей угловой библиотеки (НЕ БИБЛИОТЕКА).
{
"name": "my-project",
"version": "1.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build && npm run copyScss",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"copyScss": "xcopy \"projects\my-library\index.scss\" \"dist\\my-library\\\""
},
...
}
Теперь, очень важно, НЕ используйте ng build
для построения своей библиотеки, вместо этого используйте npm run build
.Это автоматически выполнит команду копирования.Теперь файл index.scss
экспортируется вместе с вашей библиотекой в папку my-project/dist
.
Включите index.scss
в файлы scss проекта вашего приложения
// ~ stands for the node_modules folder
@import '~my-library/index.scss';
Теперь у вас есть все ваши библиотечные миксины во всех проектах, в которых вы установили свою библиотеку.
Приветствия!
PS Временные решения не самыеэлегантные решения, но когда ничего не работает, они обходятся!