webpack实战——样式与处理

作者: 流眸Tel | 来源:发表于2020-08-24 12:14 被阅读0次

前言

这是webpack实战系列笔记的第8篇记录——样式与处理,前几篇记录如下:

  • 打包第一个应用
  • 模块化与模块打包
  • 资源输入与输出
  • 一切皆模块
  • 预处理器【上篇】
  • 预处理器——常用loader【下篇】
  • 样式文件分离

在目前的前端项目中,经常可以看到使用SASSLESS来对CSS进行处理,那么在webpack中如何配置?

样式预处理

样式预处理,指的是在开发中使用到的一些预编译语言,如SCSS. LESS等,在项目打包过程中再将这些预编译语言转换为CSS

借助这些语言强大和便捷的特性,可以降低项目的开发及维护成本。

1. Sass 与 SCSS

1.1 关系

我们经常看到Sass与SCSS,但是有什么关系呢?我们怎么选择呢?

Sass是对CSS的语法增强,它有两种语法,现在使用的更多的是SCSS。如果你两者都使用过,那么可以发现无论是安装还是配置,都是使用 sass-loader,而编写保存的文件后缀却是:.scss

一般而言,我们使用它需要配置以下几个loader搭配使用:

  • sass-loader
  • css-loader
  • style-loader
  • node-sass

如上,样式预处理器的安装好理解,那么为什么要安装node-loader呢?因为loader本身只是编译核心库与Webpack的连接器,因此这里我们除了Sass-loader以外还需安装node-sass,node-sass才是真正用来编译SCSS的,而sass-loader只是起到黏合作用。

1.2 安装

// 以下两种方式任选其一
npm install sass-loader node-sass css-loader style-loader
// 或
yarn add sass-loader node-sass css-loader style-loader

1.3 webpack配置

// webpack.config.js
module: {
    rules: [
        {
            test: /\.scss$/,
            use: ['style-loader', 'css-loader', 'sass-loader']
        }
    ]
}

1.4 测试

写一段scss测试一下:

// style.scss
$default-color: #f00;
.main{
    &_banner{
        color: $default-color;
    }
}
// index.js
import './style.scss'

1.5 查看结果

从html中引入打包后的js,查看结果:

.main_banner {
    color: #f00; 
}
结果

1.6 其他配置

如果希望在浏览器的firebug里面查看及调试源码,则需要打开sourceMap配置:

module.exports = {
    entry: {
        index: './src/index.js',
    },

    output: {
        filename: '[name].js'
    },
    mode: 'development',

    // loader配置
    module: {
        rules: [
            // scss
            {
                test: /\.scss$/,
                use: [
                    'style-loader',
                    {
                        loader: 'css-loader',
                        options: {
                            sourceMap: true
                        }
                    },
                    {
                        loader: 'sass-loader',
                        options: {
                            sourceMap: true
                        }
                    }
                ]
            }
        ],
    },
}

2. Less

Less也是对CSS的扩展。

2.1 安装

// 以下两种方式任选其一
npm install less-loader less css-loader style-loader
// 或
yarn add less-loader less css-loader style-loader

2.2 webpack配置

与SCSS配置比较类似:

modules: {
    rules: [
        {
            test: /\.less/,
            use: [
                'style-loader',
                    {
                        loader: 'css-loader',
                        options: {
                            sourceMap: true
                        }
                    },
                    {
                        loader: 'sass-loader',
                        options: {
                            sourceMap: true
                        }
                    }
            ]
        }
    ]
}

2.3 测试

// style.less
@default-color: red;
.main{
    .title{
        color: @default-color;
    }
}
// index.js
import './style.less'

2.4 编译结果

与SCSS一样,打包,引入,浏览器中查看结果:

.main .title{
    color: red;
}

小结

本篇介绍了处理样式的预处理器工具以及相关配置,通过SCSS、less等编译语言来提高CSS的开发效率且降低代码复杂度。

下一篇开始接触与性能相关的问题——代码分片。

相关文章

  • webpack实战——样式与处理

    前言 这是webpack实战系列笔记的第8篇记录——样式与处理,前几篇记录如下: 打包第一个应用 模块化与模块打包...

  • webpack 样式处理

    webpack 样式处理 分离样式文件 exract-text-webpack-plugin 4.0以下的版本np...

  • webpack 4.0 基础配置

    基础配置主要包括: webpack 基础配置安装 webpack 打包后的配置 html 插件 样式处理 es6 ...

  • 5、webpack从0到1-处理css文件

    讲下webpack如何处理css样式文件。git仓库:webpack-demo 1、新建 进入项目中,在src目录...

  • webpack实战——分离样式文件

    前言 这是webpack实战系列笔记的第7篇记录——分离样式,前几篇记录如下: 打包第一个应用 模块化与模块打包 ...

  • vue静态资源的存放

    静态资源可以放在public和webpack里 1 通过webpack处理获得如下好处 a 脚本和央样式表会被...

  • 3、webpack添加样式处理

    基础环境搭建 通过require导入的样式是无法被识别的,需要加载器: 接着基础工程添加样式处理: 1、安装样式插...

  • 9.整合打包css

    webpack提供两个工具处理样式表,css-loader 和 style-loader,二者处理的任务不同,cs...

  • SSR中Webpack-Server-Config配置

    服务端webpack配置 服务端要正确处理首屏的图片和样式等 服务端要支持动态import,懒加载 webpack...

  • webpack基础(二)样式的处理

    本系列文章的webpack版本未webpack4 样式 CSS webpack默认只支持js模块 在js中引入cs...

网友评论

    本文标题:webpack实战——样式与处理

    本文链接:https://www.haomeiwen.com/subject/avfnjktx.html