Webpack Postcss loader警告“变量未定义,在没有回退的情况下”用于包含两个CSS文件的网页条目

Webpack Postcss loader警告“变量未定义,在没有回退的情况下”用于包含两个CSS文件的网页条目,webpack,css-loader,postcss-loader,Webpack,Css Loader,Postcss Loader,在webpack条目文件index.js中,我刚刚导入了两个CSS文件a.CSS和b.CSS,但它不起作用,因为b.CSS没有看到a.CSS中的变量:b.CSS中的警告。。。变量--textColor未定义,使用时没有回退。我应该如何更改webpack.config.js以使其正常工作?我知道我可以直接在a.css中导入b.css,但这是一个简单的例子,我的项目要复杂得多,有几十个css文件,我不想更改它的内容 // webpack.config.js var MiniCssExtractPl

在webpack条目文件index.js中,我刚刚导入了两个CSS文件a.CSS和b.CSS,但它不起作用,因为b.CSS没有看到a.CSS中的变量:
b.CSS中的警告。。。变量--textColor未定义,使用时没有回退
。我应该如何更改webpack.config.js以使其正常工作?我知道我可以直接在a.css中导入b.css,但这是一个简单的例子,我的项目要复杂得多,有几十个css文件,我不想更改它的内容

// webpack.config.js

var MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = (env, options) => {
    return {
        entry : 'index.js',
        mode : 'development',
        output : {
            path : '/public',
        },
        plugins : [
            new MiniCssExtractPlugin(),
        ],
        module : {
            rules : [
                {
                    test : /\.css$/,
                    use : [
                        {
                            loader : MiniCssExtractPlugin.loader,
                        },
                        {
                            loader : 'css-loader',
                        },
                        {
                            loader : 'postcss-loader',
                            options : {
                                plugins: [
                                    require('postcss-css-variables')(),
                                ],
                            },
                        },
                    ],
                },
            ],
        },
    };
}

首先,@import将很快被弃用。使用@Use和@forward,因此值得一读


postsss css变量 如果您需要对传统浏览器(ie11)的支持,则只需要POSTSSS css变量。否则,只需按原样使用css变量即可。如果您需要传统支持,我真的建议您构建dual(适用于modern和带有transpiled css变量的dual)

这里有一个@import的遗留配置

    {
      // snippet from
      // https://github.com/unic/darvin-webpack-boilerplate/blob/master/webpack/settings/style-legacy/index.js#L29
      loader: 'postcss-loader',
      options: {
        plugins: () => [
          autoprefixer({
            grid: 'autoplace',
            flexbox: 'no-2009'
          }),
          require('postcss-css-variables')({ preserve : false, preserveAtRulesOrder: true })
        ],
        sourceMap: false,
      },
    },

Im不使用CSS@import,而是使用javascript导入-请参阅index.js您可以使用相同的配置
// a.css
:root {
  --textColor: red
}
// b.css
body {
  color: var(--textColor);
}
    {
      // snippet from
      // https://github.com/unic/darvin-webpack-boilerplate/blob/master/webpack/settings/style-legacy/index.js#L29
      loader: 'postcss-loader',
      options: {
        plugins: () => [
          autoprefixer({
            grid: 'autoplace',
            flexbox: 'no-2009'
          }),
          require('postcss-css-variables')({ preserve : false, preserveAtRulesOrder: true })
        ],
        sourceMap: false,
      },
    },