Этот код GitHub может вам помочь.https://github.com/moorthy-g/css-module-for-raw-html
Требуется немного сложной настройки.Нам нужно соединить следующие пакеты вместе.
- postcss-loader
- postcss-modules
- posthtml-css-modules
- posthtml-loader
Следующая конфигурация postcss создаетфайл дампа модулей (./tmp/module-data.json).
// postcss.config.js
module.exports = {
plugins: {
'postcss-modules': {
getJSON: function(cssFileName, json) {
const path = require('path'), fs = require('fs');
const moduleFile = path.resolve('./tmp/module-data.json');
const cssName = path.basename(cssFileName, '.css');
const moduleData = fs.existsSync(moduleFile) ? require(moduleFile) : {};
moduleData[cssName] = json;
fs.existsSync('./tmp') || fs.mkdirSync('./tmp');
fs.writeFileSync(moduleFile, JSON.stringify(moduleData));
},
generateScopedName: '[local]_[hash:base64:5]'
}
}
}
И следующее правило веб-пакета связывает html-файл с файлом дампа модулей.
{
test: /\.html$/,
use: [
{ loader: 'html-loader' },
{
loader: 'posthtml-loader',
options: {
plugins: [
require('posthtml-css-modules')('./tmp/module-data.json')
]
}
}
]
}
Наконец, HTML использует атрибут css-module
вместо class
<div css-module="main.container">
<h2 css-module="main.title">Title for the page</h2>
</div>
Дайте мне знать, если у вас возникнут проблемы