У меня есть сайт, на котором есть три базовых приложения, в которых используется множество одинаковых компонентов, но их стили немного отличаются в каждом приложении.
Итак, я создал стили сайта, которые импортируются с помощью загрузчика sass в веб-пакете
мой путь
const csspath = path.resolve(__dirname, './src/styles/main.scss');
мои грузчики
{
loader: 'sass-loader',
options: {
sourceMap: true
}
},
{
loader: 'sass-resources-loader',
options: {
resources: [csspath]
}
}
внутри одного из моих файлов sass у меня есть следующее
$navBackground: $black;
$navForeground: $white;
$itemSize: 60px;
.NavHeader {
position: sticky;
top: 0;
z-index: 1071;
background-color: $navBackground;
color: $navForeground;
width: 100vw;
height: $itemSize;
}
У меня также есть некоторые CSS, которые я импортирую внутри своих компонентов, например
import './Header.style.scss';
Если я добавлю эти переменные в стиль заголовка
$navBackground: $black;
$navForeground: $white;
он компилируется нормально, но если я удаляю эти переменные из глобальных файлов sass и сохраняю переменные только в моем локальном Header.style.scss, я получаю сообщение об ошибке
Сборка модуля не удалась (из ./node_modules/sass-loader/lib/loader.js):
background-color: $navBackground;
^
Undefined variable: "$navBackground".
in /Users/bryanrasmussen/projects/dc_frontend/src/styles/components/_header.scss (line 8, column 23)
Полагаю, очевидная проблема заключается в том, что локальные файлы sass в компонентах загружаются с помощью загрузчика sass-loaders, а ресурсы, которые являются глобальными и не привязаны к компоненту, загружаются с помощью sass-resources-loader, поэтому эти загрузчики ничего не знаю друг о друге. Таким образом, вопрос в том, могут ли они быть каким-либо образом объединены или в любом случае, что sass-resources-loader может знать о файлах sass, загруженных с помощью sass-loader?