Я пытаюсь стилизовать каждый компонент отдельно с помощью плагина css-loader Webpack. Но когда файлы имеют одинаковое имя (например, «index.scss») и имеют одинаковое свойство (например, «.container»), они будут комбинировать оба стиля, но в этом случае мне просто нужны. Как я могу решить это
Это моя конфигурация Webpack:
rules: [
{
test: /\.(sa|sc|c)ss$/,
use: [
{
loader: 'style-loader',
options: {
insertAt: 'top',
sourceMap: true
}
},
{
// Handle import/ require css
// It help to css for each component
// https://github.com/webpack-contrib/css-loader#scope
loader: 'css-loader',
options: {
sourceMap: true ,
localIdentName: '[path][name]__[local]--[hash:base64:5]',
camelCase: true,
}
},
{
loader: 'postcss-loader',
options: {
sourceMap: true,
// minimize: true,
plugins: () => [
require('postcss-flexbugs-fixes'),
// Help to generate specific css for each component
// require('postcss-modules'),
autoprefixer({
browsers: [
'>1%',
'last 4 versions',
'Firefox ESR',
'not ie < 9', // React doesn't support IE8 anyway
],
flexbox: 'no-2009',
}),
],
}
},
{ loader: 'sass-loader', options: { sourceMap: true } },
],
},
]
Пример:
src/screen1/index.tsx
const styles = require('./index.scss')
const Dashboard = ({ children, url }: IDashboardPropsIn) => {
return (
<div className={styles.body}>
{children}
</div>
)
}
А у меня 2 файла: src/screen2/index.scss
и src/screen1/index.scss
Каким-то образом в классе, имя которого body--[hash:64]
имеет оба стиля из 2 файлов
src/screen1/index.scss
:local {
.body {
grid-area: body;
background-color: $white;
}
}
и src/screen2/index.scss
:local {
.body {
display: flex;
}
}
Стиль body--[hash:64]
будет
grid-area: body;
background-color: $white;
display: flex;
Но в этом случае я импортирую только один файл src/screen1/index.scss
, например
grid-area: body;
background-color: $white;
Как я могу решить это?