Я пытаюсь добавить SASS с внешней таблицей стилей ( Bulma ) в мое приложение React. До сих пор я установил Parcel с CSS модулями по почте css. Это моя .postcssrc
конфигурация:
{
"modules": true,
"plugins": {
"autoprefixer": {
"grid": true
},
"postcss-modules": {
"generateScopedName": "[name]_[local]_[hash:base64:5]"
}
}
}
Я установил node-sass
и успешно добавил файл .scss
в один из моих компонентов. Внешние (Bulma) стили добавляются через @import "~bulma/bulma";
и корректно разрешаются.
К сожалению, импортированные стили не применяются глобально, и вместо этого имена классов изменяются аналогично локальным определениям, например:
/*! bulma.io v0.8.0 | MIT License | github.com/jgthms/bulma */
@-webkit-keyframes container_spinAround_28_Bz {
from {
transform: rotate(0deg); }
to {
transform: rotate(359deg); } }
@keyframes container_spinAround_28_Bz {
from {
transform: rotate(0deg); }
to {
transform: rotate(359deg); } }
Обратите внимание на добавленные префиксы и суффиксы.
В идеале я хотел бы импортировать таблицу стилей глобально и не изменять их имена. Я хотел бы продолжать использовать CSS модули и думаю, что мне также нужно использовать SASS для глобального изменения таблицы стилей Bulma путем переопределения переменных SASS.
В любом случае, вещи, которые я до сих пор пробовал:
- Использование
postcss-nested
и перенос импорта с использованием блока :global
:
:global {
@import "~bulma/bulma";
}
Однако это вызывает исключение:
main.scss:5018:5: Missing whitespace before :global
- Создание отдельного файла
scss
, включенного непосредственно в файл HTML через <link>
, а не импортированного в файл jsx
/ tsx
, чтобы избежать использования модулей CSS.
Похоже, что это полностью нарушает Parcel, поскольку он не может связать правильные файлы в скомпилированных HTML файлах, то есть <LONG-HASH>.css
вместо сгенерированных main.<HASH>.css
.
- Использование
postcss-import
.
Либо мои настройки неверны, либо это не влияет на файлы SASS.