webpack - 点燃元素 | 无法将 scss 加载到 lit-element
问题描述
我在 Mac 上,最新的 chrome 使用 webpack 4 和当前的 webpack scss/css 加载器(这是所需的 scss lit-element 加载器等的之前状态......):
使用:[MiniCssExtractPlugin.loader,“css-loader”,“postcss-loader”,“sass-loader”]
我无法成功地将 scss 加载到我的 lit-element 组件中。
我使用了以下示例并且失败了:
https://github.com/drdreo/lit-scss-loader ,
https://github.com/clicksolutions/lit-element-scss-loader ,
https://blog.webf.zone/on-styling-web-components-b74b8c70c492
以上都失败了。
有没有一种方法可以在这个阶段成功地将 scss 文件加载到 lit-element 组件中,因为内联方式非常混乱,我经常重复自己:
static get styles () {
return css`
.magic-class-name {
margin: 0;
}
.magic-class-name .magic-class-name2 .magic-class-name3 {
margin: 0;
} `
etc...
解决方案
我也遇到了这个问题,并以一种“hacky”的方式找到了解决方法!
我开始做的是直接将我的 scss 作为字符串注入我的 lit-element 并使用 unsafeCSS '解析'它!
您需要安装“to-string-loader”:
yarn add to-string-loader -D
npm install to-string-loader --save-dev
我的 webpack 配置(相关部分):
{
test: /\.(s?)css$/,
use: [
// to inject the result into the DOM as a style block
{ loader: "to-string-loader" },
{
loader: "css-loader",
},
{
// to convert SASS to CSS
loader: "sass-loader",
},
],
},
另外不要忘记将 scss/css 添加到您的扩展中:
...
extensions: [".ts", ".js", ".scss", "css"],
...
使用此 Webpack 会将您的 SCSS 转换为 CSS,并将其“内容”作为字符串插入任何需要的地方!
在我的课程中,我将以下内容添加到“静态获取样式()”中:
import {..., unsafeCSS, css } from "lit-element";
class WebComponent extends LitElement {
static get styles() {
return css`
${unsafeCSS(require("./path/to/your/styles.scss"))}
`;
}
}
即使它有点 hacky,我仍然可以在我的 .scss 样式中获得 IDE 的完整智能感知!
而且由于我的 scss 文件中没有“用户输入”,我也不太担心 XSS,即使使用 unsafeCSS()。
可能不是最好的,但这是我现在所做的工作!
祝你好运,我也会关注这个主题以获得更好/改进的答案!
推荐阅读
- openstreetmap - 确定是十字路口还是三向路口
- python - Accuracy_score 出现错误
- java - 使用spark检索elasticsearch数据时出错
- python - 如何从巨大的 tar.gz 文件中下载文件夹?
- powershell - Powershell读取大量文本文件,过滤信息并作为一行写入其他文本文件
- sql - 使用游标执行sql查询并将其值存储在表中
- python - 从熊猫数据框文本列中获取数组的有效方法
- c# - 我想要用户的 ax value(double)。但是当试图输入 string.program 时崩溃。我该如何解决
- python - 生成趋势特定数据
- python - 如何用最短到最长匹配从头到尾替换文本