首页 > 其他分享 >【Webpack】-css,less,图片的打包及压缩优化

【Webpack】-css,less,图片的打包及压缩优化

时间:2024-01-05 15:00:41浏览次数:25  
标签:less webpack loader Webpack path js css

一、打包CSS代码

由于Webpack默认只识别js代码,所以打包css代码需要其他一些东西来帮忙

加载器css-loader:解析css代码

加载器style-loader:把解析后的css代码插入到DOM

步骤:

1.准备css文件代码引入到src/login/index.js中(压缩转译处理等)

2.下载css-loader和style-loader本地软件包

3.配置webpack.config.js让Webpack拥有该加载器功能

4.打包后观察效果

【Webpack】-css,less,图片的打包及压缩优化_css

二、优化-提取css代码

插件mini-css-extract-plugin:提取css代码

步骤:

1.下载mini-css-extract-plugin本地软件包

2.配置webpack.config.js让Webpack拥有该插件功能

3.打包后观察效果

注意:不能和sty-loader一起使用

好处:css文件可以被浏览器缓存,减少js文件体积【Webpack】-css,less,图片的打包及压缩优化_css_02

/**
 * 目标6:优化-提取 css 代码到单独的 css 文件中
 *  6.1 下载 mini-css-extract-plugin 本地软件包
 *  6.2 配置 webpack.config.js 让 Webpack 拥有该插件功能
 *  6.3 打包后观察效果
 */
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin')
const MiniCssExtractPlugin = require("mini-css-extract-plugin")
module.exports = {
    //入口
    entry: path.resolve(__dirname, 'src/login/index.js'),
    //出口
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: './login/index.js',
        clean: true //生成打包后内容之前,清空输出目录
    },
    //插件
    plugins: [
        new HtmlWebpackPlugin({
            template: path.resolve(__dirname, 'public/login.html'),//模板文件
            filename: path.resolve(__dirname, 'dist/login/index.html')//输出文件
        }),
        new MiniCssExtractPlugin()//生成CSS文件
    ],
    //加载器(让webpack 识别更多模块文件内容)
    module: {
        rules: [
            {
                test: /\.css$/i,
                // use: ['style-loader', 'css-loader'],
                use: [MiniCssExtractPlugin.loader, "css-loader"]
            },
        ],
    },
};

三、优化-压缩过程

问题:css代码提取后没有压缩

解决:使用css-minimizer-webpack-plugin插件

步骤:

1.下载css-minimizer-webpack-plugin本地软件包

2.配置webpack.config.js让webpack拥有该功能

3.打包重新观察

【Webpack】-css,less,图片的打包及压缩优化_css_03

【Webpack】-css,less,图片的打包及压缩优化_Webpack_04

/**
 * 目标7:优化-压缩 css 代码
 *  7.1 下载 css-minimizer-webpack-plugin 本地软件包
 *  7.2 配置 webpack.config.js 让 Webpack 拥有该插件功能
 *  7.3 打包后观察效果
 */
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin')
const MiniCssExtractPlugin = require("mini-css-extract-plugin")
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
module.exports = {
    //入口
    entry: path.resolve(__dirname, 'src/login/index.js'),
    //出口
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: './login/index.js',
        clean: true //生成打包后内容之前,清空输出目录
    },
    //插件
    plugins: [
        new HtmlWebpackPlugin({
            template: path.resolve(__dirname, 'public/login.html'),//模板文件
            filename: path.resolve(__dirname, 'dist/login/index.html')//输出文件
        }),
        new MiniCssExtractPlugin()//生成CSS文件
    ],
    //加载器(让webpack 识别更多模块文件内容)
    module: {
        rules: [
            {
                test: /\.css$/i,
                // use: ['style-loader', 'css-loader'],
                use: [MiniCssExtractPlugin.loader, "css-loader"]
            },
        ],
    },
    //优化
    optimization: {
        //最小化
        minimizer: [
            // 在 webpack@5 中,你可以使用 `...` 语法来扩展现有的 minimizer(即 `terser-webpack-plugin`),将下一行取消注释
            `...`,
            new CssMinimizerPlugin(),
        ],
    },
   };

四、打包less代码

加载器less-loader:把less代码编译为css代码

步骤:

1.新建less代码(设置背景图)并引入到src/login/index.js中

2.下载lessless-loader本地软件包

3.配置webpack.config.js让Webpack软件包使用

注意:less-loader需要配合less软件包使用

【Webpack】-css,less,图片的打包及压缩优化_css_05

【Webpack】-css,less,图片的打包及压缩优化_html_06

/**
 * 目标8:打包 less 代码
 *  8.1 新建 less 代码(设置背景图)并引入到 src/login/index.js 中
 *  8.2 下载 less 和 less-loader 本地软件包
 *  8.3 配置 webpack.config.js 让 Webpack 拥有功能
 *  8.4 打包后观察效果
 */
// 8.1 新建 less 代码(设置背景图)并引入到 src/login/index.js 中
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin')
const MiniCssExtractPlugin = require("mini-css-extract-plugin")
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
module.exports = {
    //入口
    entry: path.resolve(__dirname, 'src/login/index.js'),
    //出口
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: './login/index.js',
        clean: true //生成打包后内容之前,清空输出目录
    },
    //插件
    plugins: [
        new HtmlWebpackPlugin({
            template: path.resolve(__dirname, 'public/login.html'),//模板文件
            filename: path.resolve(__dirname, 'dist/login/index.html')//输出文件
        }),
        new MiniCssExtractPlugin()//生成CSS文件
    ],
    //加载器(让webpack 识别更多模块文件内容)
    module: {
        rules: [
            {
                test: /\.css$/i,
                // use: ['style-loader', 'css-loader'],
                use: [MiniCssExtractPlugin.loader, "css-loader"]
            },
            {
                test: /\.less$/i,
                use: [
                    // compiles Less to CSS
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    'less-loader',
                ],
            },
        ],
    },
    //优化
    optimization: {
        //最小化
        minimizer: [
            // 在 webpack@5 中,你可以使用 `...` 语法来扩展现有的 minimizer(即 `terser-webpack-plugin`),将下一行取消注释
            `...`,
            new CssMinimizerPlugin(),
        ],
    },

};

五、打包图片

资源模块:Webpack5内置资源模块(字体,图片等)打包,无需额外loader

步骤:

1.配置webpack.config.js让Webpack拥有打包图片功能

占位符【hash】对模块内容做算法计算,得到映射的数字字母组合的字符串

占位符【ext】使用当前模块原本的占位符,例如:.png/.jppg等字符串

占位符【query】保留引入文件时代码中查询参数(只用URL下生效)

2.打包后观察效果和区别

注意:判断临界值默认为8KB

大于8KB文件:发送一个单独的文件并导出URL地址

小于8KB文件:导出一个data URL(base64字符串)

【Webpack】-css,less,图片的打包及压缩优化_css_07


标签:less,webpack,loader,Webpack,path,js,css
From: https://blog.51cto.com/u_15858858/9114578

相关文章

  • 【Webpack】-定义及各种使用和自动生成html插件
    一、什么是Webpackwebpack被定义为现代JavaScript应用程序的静态模块打包器(modulebundler),是目前最为流行的JavaScript打包工具之一。静态模块:指的是编写代码过程中的,html,css,js,图片等固定内容的文件打包:把静态模块内容,压缩,整合,转译等(前端工程化)1.把less/sass转成css代码2.......
  • Cisco Catalyst 9800-CL Wireless Controller for Cloud, Release Bengaluru-17.06.01
    面向云的思科Catalyst9800-CL无线控制器,专为基于意图的网络全新打造。版本:C9800-CL-universalk9.17.06.01(31-Jul-2021)C9800-CL-universalk9.17.05.01(01-Apr-2021)C9800-CL-universalk9.17.04.01(29-Nov-2020)C9800-CL-universalk9.17.03.03(05-Mar-2021)C9800-CL-univers......
  • 爬虫如何使用代理IP通过HTML和CSS采集数据
    前言爬虫是一种自动化工具,用于从互联网上获取数据。代理IP是一种用于隐藏真实IP地址并改变网络请求的方法。在爬虫中使用代理IP可以帮助我们采集大量数据时绕过反爬虫机制,并提高爬取效率。本文将介绍如何使用代理IP通过HTML和CSS采集数据,并提供相关代码示例。1.了解代理IP代理IP是......
  • 【技术问题】less里面&代表什么
    在Less中,&符号通常用于引用父选择器。在嵌套的样式规则中,&表示对父选择器的引用,可以帮助你避免重复代码并更方便地管理样式。例如,考虑以下Less代码:.button{color:blue;&:hover{color:red;}&.active{font-weight:bold;}}在上面的例子中,&:hover引......
  • 可以直接在 CSS 中添加 alt/aria-label 吗?
    我们目前正在对我们的网站完成一些无障碍检查。它发现的问题之一是我们移动版本上的2个图标需要“可识别的文本”:在此页面上-https://sthelens.ac.uk/kcc-course-enquiry-查看移动版本时,搜索图标和汉堡菜单图标没有替代文本。但是,我似乎找不到它是在哪里控制的。我找到了分配......
  • 如何在Nuxt 3中为<html>和<body>标签添加Tailwind CSS类?
    在Nuxt3中为<html>和<body>标签添加TailwindCSS类,可以参考以下步骤:安装TailwindCSS:在项目根目录下运行以下命令安装TailwindCSS和其依赖:npminstalltailwindcss@latest@tailwindcss/typography@latestpostcss@latestautoprefixer@latest创建TailwindCSS配......
  • 使用 JavaScript 根据输入值调整输入字段 (HTML) 的 (CSS) 中的文本颜色
    可以通过以下代码使用JavaScript根据输入值调整输入字段的文本颜色:HTML:<inputtype="text"id="myInput"oninput="changeTextColor()"placeholder="Enteravalue">CSS:#myInput{color:black;}JavaScript:functionchangeTextColor......
  • CSS选择器
    一、属性选择器[att^=value]前缀:通过属性名和属性值的前缀进行选择在CSS中,我们可以使用属性选择器来选择具有特定属性值的元素。其中,通过设置属性值的前缀(value),我们可以选择具有以某个特定前缀开头的属性值。例如,如果我们想选择所有属性名为att且属性值以value开头的元素,可以......
  • CSS3入门
    一.CSS3的概述 1.定义:层叠样式表;d2.意义:把内容与形式分开;html:内容;CSS:形式3.浏览器:chrome4.css样式规则e选择器(属性1:值,属性2:值;.......)选择器区分大小写,“5.css样式表的导入(1)行内式例:style="font-size:50px;font[amily:隶书;写在标记内;“  ......
  • scss样式穿透>>>或/deep/或::v-deep
    参考:https://www.jianshu.com/p/7f38b0aa6fb7<stylescoped>.menuItem{//常用方式1,2>>>.ant-input{border-radius:50px;}/deep/.ant-input{font-size:14px;}//在scss,less,sass等解析器中::v-deep.ant-input{colo......