css - 为什么 Webpack 的 sass-loader 在生产模式下最小化 CSS?

标签 css webpack sass-loader

我正在为 .css.scss 文件设置 Webpack 加载器配置,我注意到在使用 --mode production 时我'我将最小化的 CSS 作为最终输出,甚至没有明确使用最小化器,这是我的加载器配置:

{
  // Match .css or .scss
  test: /\.s?css$/,
  use: [
    isProd
    // In production extract the CSS into separate files
    ? {
      loader: MiniCssExtractPlugin.loader,
      options: {
        hmr: !isProd
      }
    }
    // In development inject the styles into the DOM
    : 'style-loader',
    {
      loader: 'css-loader'
    },
    {
      loader: 'sass-loader',
      options: {
        sourceMap: false
      }
    }
  ]
}

我正在使用 sass-loadernode-sassmini-css-extract-plugin 将 CSS 提取到单独的文件中,这建议使用 optimize-css-assets-webpack-plugin 通过覆盖 optimization.minimizer 来最小化 CSS,但我已经在不安装此插件的情况下获得最小化输出。

为了找到导致此行为的原因,我尝试使用和不使用 sass-loader 处理 CSS 文件,我发现 sass-loader 可能导致此行为,但它不会' 有最小化 CSS 的任何选项。

那么是什么导致了这种行为?如果我的 CSS 文件已最小化,我还需要 optimize-css-assets-webpack-plugin 吗?

最佳答案

sass-loader options中的option outputStyle决定了最终CSS样式的输出格式。
默认:nested。
更多详情https://github.com/sass/node-sass#outputstyle
要禁用缩小,请将此选项设置为 expanded:

{
  loader: 'sass-loader',
  options: {
    sassOptions: {
        outputStyle: 'expanded'
    }
  }
}

对于缩小 css,我推荐插件 css-nano。它的设置很灵活。与 postcss-loader 配合使用效果很好。

关于css - 为什么 Webpack 的 sass-loader 在生产模式下最小化 CSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57658837/

相关文章:

typescript - Webpack - 提供 core-js polyfills

javascript - 将ps.js 包含到rails/webpack 项目中

javascript - 使用 Vue 在运行时更改应用程序主题

webpack - Webpack 中的相对 CSS url

vue.js - sass-loader 无法解析@use 规则

javascript - 如何从 HTML 元素更改特定的内联样式?

javascript - 使用 Javascript 应用 CSS

javascript - 如何在ajax加载时显示灯箱背景

javascript - react 状态变化不会导致重新渲染

minify - 我应该缩小 node_modules 还是应该使用为在客户端部署提供的缩小版本?