javascript - 接下来如何在 React SSR 框架中使用 TS+css+scss?
问题描述
我在 nextJS 中使用 TS + CSS + SCSS。我将导入一些 CSS 文件,但我想设置cssModule:false
为那些 CSS 文件,然后我将导入我自己的 SCSS 文件并设置cssModule:true
.
下面是我的代码next.config.js
,它将 CSS 文件传输到模块。
const withSass = require("@zeit/next-sass");
const withTypescript = require("@zeit/next-typescript");
const withCSS = require("@zeit/next-css");
module.exports = withTypescript(
withCSS(
withSass({
cssModules: true
})
)
);
你能告诉我导入 CSS 文件的正确方法吗?
解决方案
The configuration of next-css
is global, you either using cssModules
or not.
My solution for this was to configure webpack manually to not apply cssModules
on files with .global.css
suffix.
config.module.rules.forEach(rule => {
if (rule.test.toString().includes('.scss')) {
rule.rules = rule.use.map(useRule => {
if (typeof useRule === 'string') {
return {
loader: useRule,
};
}
if (useRule.loader.startsWith('css-loader')) {
return {
oneOf: [
{
test: /\.global\.scss$/,
loader: useRule.loader,
options: {
...useRule.options,
modules: false,
},
},
{
loader: useRule.loader,
options: useRule.options,
},
],
};
}
return useRule;
});
delete rule.use;
}
});
There is an open PR for next-css to include similar solution to the lib.
推荐阅读
- ios - 使用子视图拍摄 ARSCNView 快照
- angularjs - angularJS -UI-grid cellTooltip 用于动态列
- yaml - 当运行服务器作业仍在运行时,如何在一个 yml 作业中开始运行服务器并在另一个作业中进行测试
- python - 如何根据频率将多列字符变量编码为0、1、2
- database - 如何在数据库中存储“无限数据”?
- sql - 在 SQL 查询中计算返回值
- android - runInTransaction 块内的挂起方法
- python - 在准确的预定时间播放音频样本以在 Python 中创建音乐
- r - 用于计算多个变量均值的 R 代码,条件是另一个变量列表的值
- python - 在熊猫中添加列,差异为 2 行