css - 为什么在使用 camelCase 时 PurgeCSS 会清除导入的 SASS 样式?
问题描述
我正在尝试结合 CSS-modules 和 PurgeCSS 来获得模块范围和轻量级 CSS 包。
我已经能够使用类似styles["my-class"]
但更喜欢的语法来完成此操作styles.myClass
(它有效,但在 SASS 文件中导入的 SASS 被剥离)。
本地文件中的 SASS 按预期工作,但 SASS @imported fromnode_modules
或其他文件不适用于 camelCase 引用。
在下面的代码中,我将得到如下输出:
.Component--container--AfniF {
margin: 1em;
}
但是我在组件中引用的所有导入的 SASS 都styles.myClass
被清除了。
但是,当被引用时,styles["my-class"]
一切都按预期工作,我得到如下输出:
.Component--my-class--6Mlw4 {
color: purple;
}
.Component--container--AfniF {
margin: 1em;
}
有任何想法吗?
// otherstyles.scss
.my-class {
color: purple;
}
// Component.scss
@import "otherstyles";
.container {
margin: 1em;
}
///Component.js
import React, { Fragment, useState } from "react";
import classnames from "classnames";
import styles from "./Component.scss";
export default function ({ data }) {
return <div className={classnames([styles.myClass, styles.container])}>
//webpack.config.js
...
{
test: /.scss$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
},
{
loader: "css-loader",
options: {
modules: true,
camelCase: true,
importLoaders: 1,
sourceMap: true,
localIdentName: "[name]--[local]--[hash:base64:5]",
},
},
{
loader: "postcss-loader",
},
{
loader: "@americanexpress/purgecss-loader",
options: {
paths: [path.join(__dirname, "src/**/*.{js,jsx}")],
},
},
{
loader: "sass-loader",
options: {
includePaths,
outputStyle: "expanded",
sourceMap: true,
},
},
],
},
解决方案
推荐阅读
- c++ - 如何从数字 10 及以上的数字中删除前面的“0”?
- jupyter-notebook - Jupyter notebook pandas values_counts() 打印混乱
- excel - 如何使用“提取到 Excel”查询从 Sharepoint 提取的文件列表中提取完整的 unicode url
- swift - SwiftUI 中真正的延迟动画效果
- flutter - 如何在一个 ReceivePort dart 上进行多个订阅
- excel - 在 INDIRECT 函数中使用字符串来操作单元格地址
- data-science - 关于“类状态”和时间序列数据的特征工程
- sql - 使用 datediff 获取正确的小时值
- amazon-web-services - 在 Amazon s3 中更新第一行大型 CSV 文件的最佳方法
- typescript - 对象可能为“null”,类型为“as HTMLInputElement”,但不是“any”