Webpack 处理 CSS、Less 与 Sass 样式配置详解

作者:流萤

时间:2026-10-23

浏览:474

本文详细讲解在 Webpack 项目中如何处理 CSS、Less 和 Sass 样式文件。通过安装对应的 loader(如 css-loader、less-loader)实现样式加载,并结合 postcss-loader 与 autoprefixer 插件自动添加浏览器厂商前缀,解决跨浏览器兼容性问题。

文章目录

Webpack 处理 CSS、Less 与 Sass 样式配置详解

本文介绍了webpack处理 css\less\sass 样式的方法,分享给大家,具体如下: (一)处理普通的.css 文件,需要安装 css-loader,style-loader

处理普通的 .css 文件,需要安装 css-loader 和 style-loader。

处理 .less 文件,需要安装 less-loader。

基础样式 Loader 安装与配置


npm install --save-dev css-loader
npm install --save-dev css-loader
npm install less-loader --save-dev

处理 .sass 文件,需安装 sass-loader(注:原文提及 less-loader,此处依原文保留但建议核实,通常 sass 对应 sass-loader)。

在项目中,我们会遇到不同浏览器前缀不同的问题。比如 display: flex,在 IE 以及谷歌下前缀是不同的。

PostCSS 自动前缀处理


npm install postcss-loader --save-dev
npm install autoprefixer --save-dev

这时候,我们需要 postcss 这样的插件。

Webpack 核心配置示例


var htmlWebpackPlugin = require('html-webpack-plugin');
var path = require('path');
console.log(__dirname);
module.exports = {
  /*context: __dirname,*/
  entry: './src/app.js',

  output: {
    path: './dist',
    filename: 'js/[name]-bound.js'//生成后的文件名 为 a-2ea5b2e9b258a8bbba73.js,main-2ea5b2e9b258a8bbba73.js
  },
  module: {
    loaders: [
      {
        test: /\.css$/, //正则表达式,匹配.css文件
        loader: 'style!css?importLoaders=1!postcss' //处理顺序 从右到左
                // ?importLoaders=1 表示 引入嵌入的 css文件也会按照postcss这样自动添加前缀
      },
      {
        test: /\.less$/,
        loader: 'style!css!postcss!less'
      }
    ],
    rules: [{
      test: /\.(css|scss|less)$/,
      loader:"style-loader!css-loader?importLoaders=1!postcss-loader" //由于webpack2.X 版本对post-css书写方式的改变
                                              //需要新添加 postcss.config.js
    }] 
  },
  plugins: [
    new htmlWebpackPlugin({
      filename: 'index.html', //通过模板生成的文件名
      template: 'index.html',//模板路径
      inject: 'body' //是否自动在模板文件添加 自动生成的js文件链接

    })
  ]
};

安装好相关 loader 后,我们需要在 webpack.config.js 中加入相关配置代码,如下。

PostCSS 配置文件


module.exports = {
  plugins: [
    require('autoprefixer')({
      browsers: 'last 5 version' //前五种浏览器版本
    })
  ]
};

项目入口与样式引入


import layer from './components/layer/layer.js';
import './css/common.css';

const App = function () {
  console.log(layer);
}

new App();

postcss.config.js 代码如下。

Less 组件示例


import './layer.less';

function layer(){
  return{
    name:'layer',
    tpl:'tpl'
  };
}

export default layer;

CSS 与 Flex 布局示例


//layer.less
.layer{
 width:600px;
 height: 200px;
 border: 1px solid yellow;
}

//common.css
@import "flex.css";
html{
  background-color: red;
}

ul,li{
  padding:0;
  margin:0;
  list-style:none;
}
.styleFlex {
  display: flex;
}

//flex.css
.flexFlex {
  display: flex;
}

layer.js。

Webpack 处理 CSS、Less 与 Sass 样式配置详解

使用 webpack 编译后,可以查看,相关 css 以及被编译在 index.html,前缀 css 自动完成。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章