Autoprefixer 加载器破坏 Webpack 中的 scss 编译

Autoprefix loader breaks scss compilation in Webpack

我无法获得 autoprefixer-loader 1.10 作为我的 scss/css 的前缀(显然 1.20 已损坏)。添加加载程序后,它不再正确编译 mixins。当我删除错误的 mixin 时,它会编译,但不会添加前缀。这是来自终端的 Webpack 编译详细信息,以及我的模块结构。任何帮助将不胜感激。

https://gist.github.com/zachshallbetter/efafbffa7e08bcc0aab4

  module: {
    loaders: [{
      test: /\.jsx?$/,
      loaders: ['react-hot', 'babel'],
      include: path.join(__dirname, 'app/scripts')
    },
    {
      test: /\.scss$|\.css$/,
      loader: 'style-loader!css-loader!sass-loader'
    },
    {
      test: /\.jpe?g$|\.gif$|\.png$|\.svg$|\.woff$|\.ttf$|\.wav$|\.mp3$/,
      loader: "file"
    },
    {
      test: /\.json$/,
      loader: "raw-loader"
    }]
  }

我遇到了同样的问题。对我来说,问题是我在 autoprefixer-loader 之前包含了 sass-loader。 autoprefixer-loader 需要先转换 css,然后再转换为 sass。

看你的日志(比如第83行),我发现你确实也是这样。更改 webpack.config 中的以下内容:

loader: 'style-loader!css-loader!sass-loader'

至:

loader: 'style-loader!css-loader!autoprefixer-loader!sass-loader'

应该可以解决问题。希望有用!

由于 autoprefixer-loader 已被弃用,他们鼓励我们改用 postcss (https://github.com/postcss/postcss-loader),我做了这个也有效的配置:

test: /\.scss/, loader: 'style-loader!css-loader!postcss-loader!sass-loader'