webpack - 如何在 Next.js 配置中禁用 css 模块文件后缀“.module”?
问题描述
我在 100% 的情况下都使用 css 模块,那为什么每次都在文件名中写上 .module 这个词呢?如果我手动配置 webpack,我会更改这个后缀,但是在 next.js 中我该怎么做呢?
解决方案
我在同样的问题上苦苦挣扎,几个小时后,我找到了解决方案。如果你想在 100% 的情况下使用 css-modules,你必须在 next.config.js 中编辑 webpack 配置:
我所做的是通过这段代码:
const isTwoRegexEqual = (x, y) => {
return (
x instanceof RegExp &&
y instanceof RegExp &&
x.source === y.source &&
x.global === y.global &&
x.ignoreCase === y.ignoreCase &&
x.multiline === y.multiline
);
}
const getConfigToAcceptSassFilesWithoutModuleSuffix = (config) => {
return {
...config,
module: {
...config.module,
rules: config.module.rules.map((rule) => {
if (rule.oneOf) {
return {
...rule,
oneOf: rule.oneOf.map((loaderSettings) => {
if (
(!Array.isArray(loaderSettings.test) && isTwoRegexEqual(loaderSettings.test, /\.module\.(scss|sass)$/))
|| (Array.isArray(loaderSettings.test) && loaderSettings.test.filter((test) => isTwoRegexEqual(test, /(?<!\.module)\.(scss|sass)$/ )).length > 0)
) {
return {
...loaderSettings,
test: /\.(scss|sass)$/,
}
}
return loaderSettings;
})
}
}
return rule;
})
}
}
};
推荐阅读
- r - 如何从同一表的另一列中任何位置出现的一列中查找值
- javascript - 如何使 React 中的表单多次提交?
- protocol-buffers - node-red-contrib-protobuf 找不到 .proto 文件
- angular - 无法在 Angular 输入文本框中使用 Date 值发送键
- javascript - 如何访问函数 JavaScript 之外的数据(读取文件)
- python - 单值返回与嵌套的 Python 列表理解
- powershell - 你能测量 While ($ie.Busy -eq $true)
- xml - 如何创建全局变量以将函数的结果显示在 XSLT 中?
- bash - 从 bash 中的文件系统路径获取父目录路径
- linux - 打印输出到终端