如何解决如何在ReactJS中与外部Sass样式表共享组件
我试图为我的React项目构建一个monorepo,因为大多数代码在我的一些项目之间共享。我正在为此使用Yarn工作区和Lerna。
我设法得到一个基本的示例,其中两个项目之间共享React组件。但是,在此工作示例中,样式表是纯CSS样式表,并且已正确导入。 我正在使用Babel来编译React和ES6代码。
lerna exec --scope shared -- babel src -d dist --copy-files
其中shared
是我的包含共享组件的软件包。上面的命令将已转译的JS和CSS文件放在dist
文件夹中。
但是,我的实际代码库中有.scss
个文件。因此,在示例项目中尝试将外部CSS文件替换为外部SCSS文件。但是,它不起作用。样式表未应用。
我想我理解为什么它一定不能工作。在CRA项目中,每当我们使用.scss
文件时,我认为Webpack会将它们预处理为.css
文件。因此不会发生这种情况。如果我错了请纠正我。
我尝试使用Webpack代替Babel。但是,我遇到的问题是Webpack将所有文件捆绑到一个文件中,这是我不想要的。我希望单个组件文件应被转译并保存在dist
下的相同文件夹结构中。请参阅下面的文件夹结构。 shared
是具有共享组件的软件包,而myapp
软件包则使用共享的组件。
workspace
--packages
--shared
--dist
--components
--button
--Button.js
--Button.scss
--header
--Header.js
--Header.scss
--src
--components
--button
--Button.js
--Button.scss
--header
--Header.js
--Header.scss
---myapp
我的webpack.config.js
// Webpack uses this to work with directories
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: './src/index.js',// Path and filename of the result bundle.
// Webpack will bundle all JavaScript into this file
output: {
path: path.resolve(__dirname,'dist'),libraryTarget: 'commonjs2'
//filename: 'bundle.js'
},module: {
rules: [
{
test: /\.js$/,exclude: /node_modules/,use: {
loader: 'babel-loader',}
},{ test: /\.css$/,use: ['style-loader','css-loader'] },{ test: /\.(jpg|png|gif|svg|tiff)$/,use: 'file-loader' },{ test: /\.(woff|woff2|eot|ttf|otf)$/,use: 'file-loader' }
]
}
};
由于无法确定如何在可以共享的React组件中导入SCSS文件,因此我陷入了困境。
我不确定是否有办法告诉Webpack和Babel编译React文件并将其仅放置在dist
文件夹中而不将它们捆绑到单个文件中,以及是否预处理{{1 }}文件,并在转译的文件中使用它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。