Я пытаюсь внедрить модули CSS в свой проект, использующий React и Webpack. Но я хочу продолжать использовать весь созданный мной глобальный CSS.
Например, ранее я импортировал css в React вот так
import './styles.scss'
И тогда будет элемент html, использующий класс .button
, который существует внутри ./styles.scss
<button className='button'>Click me</button>
Теперь, когда я хочу реализовать модули CSS, я изменил конфигурацию css-loader
в webpack следующим образом
module: {
rules: [{
test: /\.s?css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
// This is where I added the config for css modules
modules: true,
localIdentName: '[hash:base32:5]-[name]-[local]',
importLoaders: 2,
}
},
{
loader: 'postcss-loader',
options: {
config: {
path: './postcss.config.js',
},
},
},
'sass-loader',
]
}]
}
Однако теперь я не могу использовать button
имя класса при импорте таким образом
import './styles.scss'
Поскольку имена классов в ./styles.scss
все преобразуются в имена классов на основе хешей, такие как 32osj-home-button
В принципе, как мне настроить css-loader для нормальной загрузки css, когда я импортирую таким образом
import './styles.scss'
Но использовать модули css, когда я импортирую таким образом?
import styles from './styles.scss'
OR
Есть ли какая-либо конфигурация, позволяющая настроить модули css для загрузки всех css в :global
по умолчанию и загрузки css только в :local
, когда я это укажу?
К вашему сведению, я знаю, что могу создать 2 конфигурации загрузчика для применения модулей css для файла css с таким именем
styles.modules.scss
и примените обычный css-loader по умолчанию с именем css
styles.scss
Но я предпочитаю этого не делать, поскольку после объединения их в Webpack будет создано больше файлов.