首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Babel-Plugin-React-Css-Modules导入库样式表

使用Babel-Plugin-React-Css-Modules导入库样式表
EN

Stack Overflow用户
提问于 2018-06-05 03:09:30
回答 2查看 1.6K关注 0票数 0

我正在尝试在我自己的应用程序中包含另一个库的css作为它们的组件。作为参考,我尝试使用这个数据表库:https://github.com/filipdanic/spicy-datatable

在文档中,它声明了Out of the box, spicy-datatable is bare-bones. Include this CSS starter file in your project to get the look from the demo. Edit it to suit your needs.

我尝试导入我正在构建的组件顶部的样式表,如下所示:在我自己的组件文件中导入import * as spicy from 'spicy-datatable/src/sample-styles.css';。它没有设计好样式。我尝试将原始代码放入我的assets/styles文件夹中的index.scss文件中--不起作用。我试着把它放到我自己的样式文件./component.scss中--不起作用。

我目前的设置如下:

代码语言:javascript
复制
import * as styles from './component.scss';
import * as spicy from 'spicy-datatable/src/sample-styles.css';

我得到了一个错误:

Module parse failed: Unexpected token (4:0) You may need an appropriate loader to handle this file type.

webpack.config.js

代码语言:javascript
复制
const dirNode = 'node_modules';
const dirApp = path.join(__dirname, 'client');
const dirAssets = path.join(__dirname, 'assets');

/**
 * Webpack Configuration
 */
module.exports = {
  entry: {
    vendor: ['lodash'],
    bundle: path.join(dirApp, 'index')
  },
  resolve: {
    modules: [dirNode, dirApp, dirAssets]
  },
  plugins: [],
  module: {
    rules: [
      // BABEL
      {
        test: /\.js$/,
        loader: 'babel-loader',
        exclude: /(node_modules)/,
        options: {
          compact: true
        }
      },
      // CSS / SASS
      {
        test: /\.(scss)$/,
        use: [
          'style-loader',
          {
            loader: 'css-loader',
            options: {
              importLoaders: 1,
              modules: true,
              localIdentName: '[path]___[name]__[local]___[hash:base64:5]'
            }
          },
          'sass-loader'
        ]
      },

      // IMAGES
      {
        test: /\.(jpe?g|png|gif)$/,
        loader: 'file-loader',
        options: {
          name: '[path][name].[ext]'
        }
      }
    ]
  }
};

.babelrc

代码语言:javascript
复制
"plugins": [
    [
      "react-css-modules",
      {
        "filetypes": {
          ".scss": {
            "syntax": "postcss-scss"
          }
        },
        "webpackHotModuleReloading": true
      }
    ]

我不确定我是否需要添加一些东西来专门处理.css文件,这是我第一次使用CSS模块。我认为react- CSS -modules做到了这一点,所以我不太确定为什么CSS文件不能正确加载。

编辑:

对我的webpack进行了编辑,包含了CSS:

代码语言:javascript
复制
  {
        test: /\.(css)$/,
        use: [
          'style-loader',
          {
            loader: 'css-loader',
            options: {
              modules: true,
              localIdentName: '[path]___[name]__[local]___[hash:base64:5]'
            }
          }
        ]
      },

错误消失了,但是样式仍然不会出现。

EN

回答 2

Stack Overflow用户

发布于 2018-06-05 04:34:07

您是否可以尝试更改下面的内容:

代码语言:javascript
复制
import * as spicy from 'spicy-datatable/src/sample-styles.css';

代码语言:javascript
复制
import from 'spicy-datatable/src/sample-styles.css';

如果您使用的是CSS-Modules,请尝试下面的方法:

代码语言:javascript
复制
import spicy from 'spicy-datatable/src/sample-styles.css';

然后在JSX元素上使用样式,如下所示:

代码语言:javascript
复制
<h1 className={classes.<className in CSS here>}>

我使用spicy-datatable库设置了一个codesandbox,并导入了样式,看起来就像应用了这些样式一样。样式在"Hello.css“文件中,并在"index.js”中导入。

https://codesandbox.io/s/4j31xj3689

票数 0
EN

Stack Overflow用户

发布于 2020-08-05 16:02:11

如果库不使用css -module(使用className属性而不是styleName),我们需要对导入的css禁用模块,因此类名将保持不变。这可以通过两种方式完成:

  1. 修改您的Webpack配置

代码语言:javascript
复制
module: {
    rules: [
        {
            test: /\.(css)$/,
            use: [
                'style-loader',
                {
                    loader: 'css-loader',
                    options: {
                        modules: false
                    }
                }
            ]
        },
        ...
    ]
}

  1. 将库css直接导入到您的scss样式表中(感谢this answer指出了如何执行正确的.css导入)。确保从导入行中排除.css文件扩展名。:global指令将阻止css-module修改此指令中所有样式的类名。

代码语言:javascript
复制
:global {
    @import "~library-module-name/.../CssFileWithoutExtension";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50687261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档