gpt4 book ai didi

javascript - 如何配置 `direflow-webpack.js`以支持 `sass`文件

转载 作者:行者123 更新时间:2023-12-05 05:04:34 25 4
gpt4 key购买 nike

我正在使用 webcomponents 但没有 sass 支持。

有这个文件 direflow-webpack.js 我可以覆盖普通的 webpack 并添加我的规则。

问题:


  • 在组件文件中,找不到 scss 模块。 从“../../sass/main.scss”导入样式;

  • 应用程序正在使用 typescript,并且 buildrun 过程没有出现错误。

  • 这就是我以前在 webpack.config 上添加 sass 的方式:

{
test: /\.css$/,
use: [
require.resolve('style-loader'),
{
loader: require.resolve('css-loader'),
options: {
importLoaders: 1,
},
},
{
loader: require.resolve('postcss-loader'),
options: {
// Necessary for external CSS imports to work
// https://github.com/facebookincubator/create-react-app/issues/2677
ident: 'postcss',
plugins: () => [
require('postcss-flexbugs-fixes'),
autoprefixer({
browsers: [
'>1%',
'last 4 versions',
'Firefox ESR',
'not ie < 9', // React doesn't support IE8 anyway
],
flexbox: 'no-2009',
}),
],
},
},
],
},
//add sass loader for .scss files
{
test: /\.scss$/,
use: [{
loader: "style-loader" // creates style nodes from JS strings
}, {
loader: "css-loader" // translates CSS into CommonJS
}, {
loader: "sass-loader" // compiles Sass to CSS
},{
loader: "postcss-loader"
}]
},

  • 这是我当前的简单 direflow-webpack.js,我为 sass 添加了新规则(我不确定它是否正确):
module.exports = (config, env) => ({
...webpackConfig(config, env, {
filename: 'bundle.js',
},
{
test: /\.css$/,
use: [
require.resolve('style-loader'),
{
loader: require.resolve('css-loader'),
options: {
importLoaders: 1,
},
},
{
loader: require.resolve('postcss-loader'),
options: {
// Necessary for external CSS imports to work
// https://github.com/facebookincubator/create-react-app/issues/2677
ident: 'postcss',
plugins: () => [
require('postcss-flexbugs-fixes'),
autoprefixer({
browsers: [
'>1%',
'last 4 versions',
'Firefox ESR',
'not ie < 9', // React doesn't support IE8 anyway
],
flexbox: 'no-2009',
}),
],
},
},
],
},
//add sass loader for .scss files
{
test: /\.scss$/,
use: [{
loader: "style-loader" // creates style nodes from JS strings
}, {
loader: "css-loader" // translates CSS into CommonJS
}, {
loader: "sass-loader" // compiles Sass to CSS
},{
loader: "postcss-loader"
}]
}),

});


我在控制台中没有收到任何错误,它构建并运行没有错误。

但是在组件文件里面,找不到scss模块。

从'../../sass/main.scss'导入样式;

我是否也应该在 tsconfig.json 中进行任何配置?

最佳答案

所以 direflow 支持 scss 文件是开箱即用的。

我们只需要在全局react-app-env.d.ts中声明scss,像这样:

 declare module '*.scss' {
export default style as string
}

declare module '*.css' {
export default style as string
}

declare module '*.sass' {
export default style as string
}

我们不需要做任何其他事情,只需简单地在组件中导入 scss 文件,并将其传递给 Styled 组件:

scss有两种使用方式(我简化了组件结构):

withStyles HoC 的第一种方式:

import React from 'react';
import { withStyles } from 'direflow-component';
import styles from './styles/main.scss


const MyComponent = () => {
return (
<div>
<button>press me</button
<div>
}


export default withStyles(styles)(MyComponent);

styled 组件的第二种方式:

`import React from 'react';
import { Styled } from 'direflow-component';

import MyButton from '...';
import styles from './styles/main.scss

const MyComponent = () => {
return (
<Styled styles={styles}>. {/* next line MUST be a dom el.*/}
<div>
<MyButton>press me</MyButton> {/* MyButton cant be immediate child of <Styled /> */}
<div>
</Styled>
}

`

您也可以阅读文档: https://direflow.io/styling

关于javascript - 如何配置 `direflow-webpack.js`以支持 `sass`文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61048056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com