Я использую webpack и extract-text-webpack-plugin для связывания веб-компонента (созданного с помощью preact-custom-element ) и его стиль.
Я могу успешно использовать компонент в отдельном html-файле, например:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<div>
<script async src="./webcomponent.js" type="text/javascript"></script>
<custom-menu name="Test"></custom-menu>
</div>
</body>
</html>
Тег custom-menu
- это мой веб-компонент. Он показывает стилизованный пользовательский компонент, как и ожидалось.
Однако я хочу знать, есть ли возможность применить мой пользовательский CSS (вставленный с использованием извлеченного файла styles.css
) только к пользовательскому элементу и не позволяя стилю потенциально перезаписывать другие стили, принадлежащие элементам html, вне webcomponent.
Мой конфиг веб-пакета:
const path = require('path');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
module.exports = {
entry: {
webcomponent: './lib/menu/menu-panel-webcomponent-controller.widget.js'
},
module: {
rules: [
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
})
}
]
},
output: {
path: path.resolve(__dirname, 'widget/')
},
plugins: [
new ExtractTextPlugin("styles.css")
]
};
Он берет мой пользовательский компонент menu-panel-webcomponent-controller.widget.js
и применяет функцию extract
ExtractTextPlugin
ко всем файлам CSS. Полученный пакет вместе со стилем styles.css
затем находится внутри каталога widget/
.