从零开始webpack4.x(四)样式loader

样式loader

依赖:style-loader css-loader 如果有less sass下载对应依赖

module: { // 模块
        rules: [ // 规则 css-loader 解析@import 这种语法
            // style-loader 把css 插入到head标签中
            // loader的特点 希望单一
            // loader用法 字符串只用一个loader
            // 多个loader用 []
            // loader执行顺序是 默认从右到左 从下到上
            // loader还可以写成对象 可以对一个参数options
            {
                test: /\.css$/,
                use: [
                    {
                        loader: ‘style-loader‘,
                        options: {
                            insertAt: ‘top‘
                        }
                    },
                    ‘css-loader‘,

                ]
            },
            { // sass stylus node-sass sass-loader
                test: /\.less$/,
                use: [
                    {
                        loader: ‘style-loader‘,
                        options: {
                            insertAt: ‘top‘
                        }
                    },
                    ‘css-loader‘,        // 顺序不能变 默认从下到上执行
                    ‘less-loader‘        // 把less -> css
                ]
            }
        ]
    }

如果希望抽离css,自动添加浏览器前缀 -webkit-等
依赖:mini-css-extract-plugin  postcss-loader  autoprefixer  @babel/plugin-proposal-class-properties

@babel/plugin-proposal-decorators  @babel/plugin-syntax-class-properties   @babel/plugin-transform-runtime


let MiniCssExtractPlugin = require(‘mini-css-extract-plugin‘);  // 抽离css插件

let OptimizeCSSAssetsPlugin = require(‘optimize-css-assets-webpack-plugin‘);  //  抽离css后压缩优化

let TerserJSPlugin = require(‘terser-webpack-plugin‘);       // 配合压缩js

 optimization: { // 优化项

    minimizer: [

      new TerserJSPlugin(),

      new OptimizeCSSAssetsPlugin({})

    ],

 },

plugins: [
        new MiniCssExtractPlugin({
            filename: ‘main.css‘    // 生成等css文件名
        })
 ],
module: {  rules: [    {

      test: /\.css$/,

     use: [
       MiniCssExtractPlugin.loader,

       ‘css-loader‘,
       ‘postcss-loader‘     ]    }  ]}

使用postcss-loader 需要添加 postcss.config.js

module.exports = {
  plugins: [
    require(‘autoprefixer‘)  //  添加浏览器前缀
] }

然后在package.json中"devDependencies"下添加

"browserslist": [
        "defaults",
        "not ie <= 8",
        "last 2 versions",
        "> 1%",
        "iOS >= 7",
        "Android >= 4.0"
  ]

原文地址:https://www.cnblogs.com/aisiqi-love/p/12483902.html

时间: 2024-08-30 13:24:58

从零开始webpack4.x(四)样式loader的相关文章

从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式

原文:从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 从零开始学习jQuery (五) 事件与事件对象 从零开始学习jQuery (六) jQuery中的Ajax 从零开始学习jQuery (七) jQuery动画-让页面动起来!

webpack4.0(四) --css样式及图片打包(style-loader,css-loader)

一.CSS样式打包 1. loader简介 由于Webpack打包入口目前只配置了一个index.js文件,那么其他需要被打包的文件都必须通过模块化方式引入该文件才行,而默认情况下,引入的文件必须是js文件(如项目里添加的index.js). 那么其他文件类型该如何进行打包呢?这时我们就要用到webpack中所提供的各种loader,它就是专门用于处理除JS文件之外的其他格式文件的编译.提取.合并.打包等. 其中CSS文件的打包需要用到style-loader和css-loader这两个依赖包,

从零开始学JavaScript四(数据类型)

一.分类 基本数据类型:undefined.null.string.Boolean.number 复杂数据类型:object object的属性以无序的名称和值对的形式 (name : value) 来定义 1.1 .typeof操作符 鉴于ECMAScript是松散型的,因此需要一种手段来检测给定的变量的数据类型-----typeof就可以负责提供这方面的信息的操作符. 对一个值typeof操作符可能返回下列某个字符串: "undefined"-----------如果这个值未定义

[从零开始搭网站四]CentOS配置Tomcat

点击下面连接查看从零开始搭网站全系列 从零开始搭网站 上一章带大家配置了JDK,那么现在就要来配置Tomcat容器了. 1:去 http://tomcat.apache.org/download-90.cgi 下载Tomcat的tar包,如下图: 2::将第一步下载的tomcat放到服务器上/usr路径下,怎么放请去从零开始搭网站三那里去看,写着太累了,蟹蟹 3:回到服务器,跳转至/usr,解压压缩包,删除压缩包,重命名解压后的文件夹位tomcat tar -zxv -f apache-tomc

Java从零开始学十四(包和访问控制)

一.java中的包 Java文件的组织形式Windows中的文件功能类似 在开发比较大的项目时,不可能只涉及到一个java文件,可能要创建几十,甚至几百个java文件,这个时候,我们就可以使用包,把相关的java文件放在一起,利用包来方便,快捷,有效的管理这些文件 包的引入还可以避免命名冲突的问题,不同包下的类名可以同名 二.定义包 package 包名 这条语句必须放在java源程序的第一行,前面不能有任何可执行代码,当然注释除外 包可以创建多层次的,不同层次之间用点(.)隔开和windows

从零开始学习Object-C---第四天

今天主要讲解Object-C的数据类型和表达式的使用,Object-C的四种基本数据类型:int, float, double, char 1.int类型 Object-C中存在两种特殊的格式: 1.如果整形值的第一位是0,则该整数是以八进制的计数法表示,如050表示十进制的40(0*64+5*8+0*1=40),在NSLog()中输出如下:(%i以十进制的形式输出,%o以八进制输出但是不输出前导0,%#o以八进制的形式输出包含前导0) #import <Foundation/Foundatio

从零开始学习Object-C---第四天(3)

今天首先是总结之前的数据类型: 注:id数据类型是OC的一种特殊的数据类型,可用来存储任何数据类型,是多态和动态绑定的基础. 开始新的讲解--算术表达式 一段代码开始今天的学习: 1 // 2 // main.m 3 // Demo5 4 // 5 // Created by lee on 14/11/6. 6 // Copyright (c) 2014年 lee. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h>

C语言从零开始(十四)-字符串处理

在软件开发过程中,字符串的操作相当频繁.在标准C语言库中提供了很多字符串处理的函数.今天我们来介绍一些常用的字符串处理函数.1. 字符串输入输出1.1 printf() scanf() 之前我们学习过使用"%c"进行字符的输入输出.字符串的输入输出大体相同,唯一的区别是采用"%s". 请看下面这段代码: int main() { char str[10]; printf("Please input 10 words:\n"); scanf(&qu

从零开始学安全(四十二)●利用Wireshark分析ARP协议数据包

wireshark:是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换,是目前全世界最广泛的网络封包分析软件 什么是ARP协议    协议分析篇第一个要研究的就是ARP协议.ARP(Address Resolution Protocol,地址解析协议)用于将IP地址解析为物理地址(MAC地址).这里之所以需要使用MAC地址,是因为网络中用于连接各个设备的交换机使用了内容可寻址