我们有一个 create-react-app,它使用react-frame-component来渲染页面的一部分,完全独立于页面的其余部分。
我们一直在框架内使用 css 文件将样式应用于组件。这可以通过向 Frame-component 提供带有 css 文件的 -tags 的 initialContent-property 来完成,如下所示(取自https://github.com/ryanseddon/react-frame-component/issues/74#issuecomment- 347710246 )
import Frame from 'react-frame-component'
import styles from 'public/css/styles.iframe.css'
const initialContent = () => {
return (
`<!DOCTYPE html>
<html>
<head>
<link href="${styles}" rel="stylesheet" />
</head>
<body>
<div id="page" class="page"></div>
</body>
</html>`
)
}
<Frame initialContent={initialContent()}>
<FrameContent />
</Frame>
现在我们也希望能够使用 scss 文件。
问题是在应用程序中导入 scss 文件时,它们将应用于父框架而不是内部框架(当然),无论您在哪个组件中导入它们。
所以我们需要一种方法来触发 scss 文件的编译并获取返回的已编译 css 的路径,然后我们可以将其作为字符串提供给 Frame-component(就像我们已经使用 css-files 所做的那样) .
我们已经在使用 craco 来覆盖一些 cra-config。
所以我考虑为某些后缀的 scss 文件应用一个 scss 编译器和一个文件加载器。
这是我的 craco.config.js:
module.exports = {
webpack: {
configure: {
module: {
rules: [
{
test: /\.(s*).theme.scss$/,
use: [
"file-loader",
"sass-loader"
]
}
]
}
}
}
};
文件在
css/style.theme.scss
它是这样包含的:
const testScss = require("./css/style.theme.scss");
但我不断得到
Module not found: Can't resolve './css/style.theme.scss' in '.../.../dist'