如何在 Next.js 配置中禁用 css 模块文件后缀“.module”?
How to disable css module file suffix ".module" in Next.js config?
我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;
})
}
}
};
我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;
})
}
}
};