最近,我开始使用CSS模块使用NextJS。为了消除重复,我想在每个样式表中自动导入带有混音、变量等的部分。
通过使用GatsbyJS,我发现了如何在我的项目中的每个样式表中自动导入一些特定的SASS部分。设置如下:
{
resolve: `gatsby-plugin-sass`,
options: {
data: '@import "_reset.scss", "_typography.scss", "_mixins.scss", "_extends.scss", "_themes.scss";',
includePaths: [
'src/styles/partials',
],
},
},现在我的next.settings.js看起来是这样的:
const path = require("path");
const withSass = require("@zeit/next-sass");
const partials = [
"_reset.scss",
"_variables.scss",
"_themes.scss",
"_typography.scss",
"_mixins.scss",
"_extends.scss",
];
module.exports = withSass({
cssModules: true,
webpack: config => {
config.resolve.alias["components"] = path.join(__dirname, "components");
return config;
},
});如果可能的话,我如何在每个样式表中自动解锁部分呢?
解决问题的办法,感谢@eric-tan回复:
所有的部分都是在一个"_utilty.scss“部分中导入的,该部分包含在sassLoaderOptions:->数据中:导入部分本身;-> includePaths:导入的部分位于何处。
const path = require("path");
const withSass = require("@zeit/next-sass");
module.exports = withSass({
cssModules: true,
sassLoaderOptions: {
data: '@import "_utility.scss";',
includePaths: [
path.resolve(__dirname, "styles/"),
]
},
webpack: config => {
config.resolve.alias["components"] = path.join(__dirname, "components");
return config;
},
});发布于 2019-09-04 08:29:54
我们可以像这样使用sass加载程序:
{
// Loads a SASS/SCSS file and include the partial files before compilation
loader: 'sass-loader',
options: {
data:
'@import "foo-partial";\n ' +
'@import "bar-partial";',
includePaths: [
path.resolve(__dirname, '../src/assets/styles')
]
}
}nextSass提供sass装载机选项,您可以尝试将它们合并到您的设置中。
发布于 2021-02-18 18:30:41
在较新版本的sass-加载程序中,由于不再支持数据选项,上述方法停止工作。而不是:
options: {
data: `@import "${__dirname}/sass/variables";`,
}使用:
options: {
additionalData: `@import "${__dirname}/sass/variables";`,
}https://stackoverflow.com/questions/57784020
复制相似问题