Angular.io заявляет, что:
Основной файл конфигурации CLI, angular.json, [...] позволяет заменить любой файл на определенный для целиверсия этого файла.
На самом деле это видение, но согласно этой ветке GitHub , на данный момент это не так.
Кажется, до сих пор,поддерживаются только файлы .ts
и .html
.
Таким образом, в настоящее время ответ на вопрос - нет, пока невозможно заменить файлы SCSS.
Но есть обходной путь:
Вы можете использовать различные конфигурации в angular.json
для достижения одной и той же цели - замены файла SCSS.
структура папок:
src/
scss/
default/
_scss-config.scss
special/
_scss-config.scss
src / scss / default / scss-config.scss
body { background-color: blue; }
src / scss / special / scss-config.scss
body { background-color: red; }
angular.json
<!-- language: lang-json -->
{
[...]
"architect": {
"build": {
"options": {
"stylePreprocessorOptions": {
"includePaths": [
"src/scss/default"
]
}
},
"configurations": {
"default": {
"stylePreprocessorOptions": {
"includePaths": [
"src/scss/default/"
]
}
},
"special": {
"stylePreprocessorOptions": {
"includePaths": [
"src/scss/special/"
]
}
}
}
},
"serve": {
"configurations": {
"default": {
"browserTarget": "angular-scss-replacement:build:default"
},
"special": {
"browserTarget": "angular-scss-replacement:build:special"
}
}
}
[...]
}
}
style.scss или component.scss
@import 'scss-config';
/* use your SCSS variables and stuff as you normally would */
Обратите внимание, что вы не должны включать_
(подчеркивание) из имени файла в операторе импорта
(подробнее см. раздел Partials )
Как его использовать:
// 'ng serve'-command uses default configuration as defined in angular.json > build
ng serve
// default config creates blue background
ng serve --configuration=default
// specail config create red background
ng serve -c=special
(Это решение из упомянутой выше темы - от thx до richardtreier )
Недостатки этого подхода:
- Это вынуждает вас иметь определенную структуру папок для разделения ваших различных конфигураций SCSS
- Это может вынудить вас переместить эти папки из вашей обычнойструктура папок.
Например, "includePaths": ["src/scss"]
не будет работать с вышеупомянутой структурой папок, поскольку конфигурации SCSS не могут быть загружены отдельно.