Webpack 和 PostCSS Autoprefixer 不编译 Sass 部分

标签 webpack sass postcss autoprefixer extracttextwebpackplugin

我正在使用 Webpack 编译 Sass,而 PostCSS 自动前缀器无法处理导入到 style.scss 入口点的部分。

将样式直接添加到 style.scss 会按预期添加前缀,但任何引用为 @import 的文件都不会自动添加前缀。

我添加了 webpack.config、postcss.config 和 style.scss 以供引用。

webpack.config.js

var ExtractTextPlugin = require('extract-text-webpack-plugin');
var path = require('path');

module.exports = {
    entry: ['./src/js/index.js', './src/scss/style.scss'], 
    output: {
        filename: './js/bundle.js',
        path: path.join(__dirname, 'dist'),
        publicPath: './dist/'
    },
    watch: true,
    module: {
        loaders: [
        {
            test: /.jsx?$/,
            loader: 'babel-loader',
            exclude: /node_modules/,
            query: {
                presets: ['es2015', 'react']
            }
        },
        {
            test: /\.(png|jpg|gif)$/,
            use: [
                {
                    loader: 'url-loader',
                    options: {}  
                }
            ]
        },
        {
            test: /\.scss$/,
            use: ExtractTextPlugin.extract({
                fallback: "style-loader",
                use: ['css-loader', 'sass-loader', 'postcss-loader']
            }),
            exclude: /node_modules/,
        }
    ]},

    plugins: [
        new ExtractTextPlugin({ filename: './css/style.css' })
    ]

};

postcss.config.js

module.exports = {
  map: false,
  plugins: {
    'autoprefixer': {browsers: ['last 2 versions', '> 5%']},
  }
}

样式.scss

@import url('//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css');
@import 'partials/admin'; 
@import 'partials/nav';
@import 'partials/photos';  
@import 'partials/no-results';  
.test{
   display: flex; // <- This is being prefixed as expected.
}

是否有我缺少的特殊加载器或语法来自动添加 @import 文件?

* 编辑 *

我能够通过调整 scss 加载器的顺序来解决这个问题。

{
test: /\.scss$/,
use: ExtractTextPlugin.extract({
    fallback: "style-loader",
    use: [
     { loader: 'css-loader' },
     { loader: 'postcss-loader' },
     { loader: 'sass-loader', 
        options: {
           outputStyle: 'expanded'
        },
     }
   ]
}),
exclude: /node_modules/,
}

最佳答案

您可能想尝试 postcss-scss

我进一步提供了一个postcss.config.js:

module.exports = {
parser: 'postcss-scss',
plugins: [
    require('autoprefixer'),
]
}

祝你好运

关于Webpack 和 PostCSS Autoprefixer 不编译 Sass 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46246188/

相关文章:

webpack - 使用 Webpack 编写 12 要素应用程序?

css - base 使用伪元素时的 Sass 符号(之前/之后)

ruby-on-rails - Rails.application.assets 在生产环境中的等价物是什么?

reactjs - 如何使用外部CSS在Reactjs中设置背景图片?

angular - 构建过程中来自 Terser 的运行时错误 --prod

javascript - TypeScript 无法检测 *.vue 文件

javascript - webpack+babel npm 不想启动

vue.js - Vue 无效 CSS - 需要 1 个选择器或 at 规则,

css - 将 CSS 变量作为 prop 传递给 react 组件

postcss - 嵌套的 @import CSS 语句没有使用 rollup-plugin-postcss 进行汇总