【问题标题】:Webpack: How to use CSS-modules and imported CSS from outside libraries?Webpack:如何使用 CSS 模块和从外部库导入的 CSS?
【发布时间】:2018-10-17 20:29:45
【问题描述】:

我在我的 react 应用程序中使用 css-modules,但是当我尝试在 .js 文件中导入外部文件时,我无法全局导入它们,因为我无法将它们包装在 :global 块中,并且 webpack 将它们解释为样式旨在用作对象。

如何将 CSS 文件作为全局 CSS 从外部库导入?这是应该与导入的插件匹配的 CSS。

例如在 src/index.js 中

import 'draft-js/dist/Draft.css';
//cannot wrap in a :global block since it is imported
import 'react-responsive-carousel/lib/styles/carousel.min.css'; 
// is wrapped in a :global {...} block, so it works
import './styles/app.css'; 

Webpack 配置,来自 Create-React-App

test: /\.css$/,
loader: [
  require.resolve('style-loader'),
  {
   loader: require.resolve('css-loader'),
   options: {
     importLoaders: 1,
     modules: true,
     minimize: true,
    },
   },
    'postcss-loader'
]

【问题讨论】:

  • 另一种解决方案是将我需要的每个 css 文件都包含在单独的供应商文件夹中..但这似乎效率低下

标签: css reactjs webpack


【解决方案1】:

一种选择是为src 样式和node_modules 样式设置两个单独的规则,并且只在src 配置中将modules 设置为true。它应该类似于下面的内容(我没有对此进行测试) - 重要的选项是 includeexclude 并从适用于 node_modules 的规则中删除 modules

{
    test: /\.css$/,
    exclude: /node_modules/,
    loader: [
        require.resolve('style-loader'),
        {
            loader: require.resolve('css-loader'),
            options: {
                importLoaders: 1,
                modules: true,
                minimize: true,
            },
        },
        'postcss-loader'
    ]
},
{
    test: /\.css$/,
    include: /node_modules/,
    loader: [
        require.resolve('style-loader'),
        {
            loader: require.resolve('css-loader'),
            options: {
                importLoaders: 1,
                minimize: true,
            },
        },
        'postcss-loader'
    ]
}

【讨论】:

  • 我的一个 node_modules 需要 CSS 模块,但我确实知道如何专门排除它...
猜你喜欢
  • 2017-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
  • 2020-04-14
  • 2018-03-02
  • 2020-06-27
相关资源
最近更新 更多