Reactjs 使用webpack和React在开发/生产中配置CSS模块

Reactjs 使用webpack和React在开发/生产中配置CSS模块,reactjs,webpack,Reactjs,Webpack,如何在生产中使用CSS模块并在生产中加载标准CSS文件 我正在使用Web包配置一个新的应用程序 在开发中我使用CSS模块使用网页包加载程序: 我将样式文件导入.jsx文件: import style from './stile.scss'; export class App extends React.Component { render() { return ( <div> <div> &

如何在生产中使用CSS模块并在生产中加载标准CSS文件

我正在使用Web包配置一个新的应用程序

开发中我使用CSS模块使用网页包加载程序:

我将样式文件导入.jsx文件:

import style from './stile.scss';
export class App extends React.Component {
 render() {
    return (
        <div>
            <div>
                <span className={style.title}>Ciao</span>
            </div>
        </div>
    )
 }
}
通过这种方式,一切都可以正常工作(样式包含在.js文件中,并且类已正确设置)

但是在生产中?我应该让浏览器呈现webpack bundle.js输出文件中包含的所有类

我宁愿创建一个带有webpack(和ExtracttextPlugin)和我所有风格的css文件:

 {
     test: /\.(css|scss)$/,
     loader: ExtractTextPlugin.extract('css-loader' )
 }
并链接在my index.html中生成的.css

问题是现在React组件中的所有类定义不再在浏览器中呈现


我该如何解决这个问题?

你不能从使用CSS模块切换到不使用它们,这是行不通的,因为你的代码依赖于CSS模块。同样,也没有理由不在生产中使用CSS模块。您想要更改的不是CSS模块,而是包含CSS的方式。您可以使用
extract text webpack plugin
将它们解压缩到一个单独的
.css
文件中,而不是将其保存在JavaScript包中,但是您仍然需要对加载程序使用相同的配置

网页1

{
  test: /\.(css|scss)$/,
  loader: ExtractTextPlugin.extract('style-loader', 'css-loader?sourceMap&modules&importLoaders=1&localIdentName=[name]-[local]___[hash:base64:5]!sass-loader?sourceMap')
}
第一个参数
style loader
仅在无法提取CSS时用作回退

网页第2页

ExtractTextPlugin.extract
的参数已更改,并使用
options
而不是字符串中的内联查询来提高可读性

{
  test: /\.(css|scss)$/,
  loader: ExtractTextPlugin.extract({
    fallback: 'style-loader',
    use:  [
      {
        loader: 'css-loader',
        options: {
          sourceMap: true,
          modules: true,
          importLoaders: 1,
          localIdentName: '[name]-[local]___[hash:base64:5]'
        }
      },
      { loader: 'sass-loader', options: { sourceMap: true } }
    ]
  })
}

您不能从使用CSS模块切换到不使用CSS模块,这是行不通的,因为您的代码依赖于CSS模块。同样,也没有理由不在生产中使用CSS模块。您想要更改的不是CSS模块,而是包含CSS的方式。您可以使用
extract text webpack plugin
将它们解压缩到一个单独的
.css
文件中,而不是将其保存在JavaScript包中,但是您仍然需要对加载程序使用相同的配置

网页1

{
  test: /\.(css|scss)$/,
  loader: ExtractTextPlugin.extract('style-loader', 'css-loader?sourceMap&modules&importLoaders=1&localIdentName=[name]-[local]___[hash:base64:5]!sass-loader?sourceMap')
}
第一个参数
style loader
仅在无法提取CSS时用作回退

网页第2页

ExtractTextPlugin.extract
的参数已更改,并使用
options
而不是字符串中的内联查询来提高可读性

{
  test: /\.(css|scss)$/,
  loader: ExtractTextPlugin.extract({
    fallback: 'style-loader',
    use:  [
      {
        loader: 'css-loader',
        options: {
          sourceMap: true,
          modules: true,
          importLoaders: 1,
          localIdentName: '[name]-[local]___[hash:base64:5]'
        }
      },
      { loader: 'sass-loader', options: { sourceMap: true } }
    ]
  })
}