Webpack5基础

127 阅读3分钟

前言

image.png

Loaders | webpack 中文文档 | webpack 中文文档 | webpack 中文网 (webpackjs.com) 可以从webpack官网学习

什么是webpack

webpack 是一种前端资源构建工具,一个静态模块打包器(module bundler)。 在 webpack 看来, 前端的所有资源文件(js/json/css/img/less/...)都会作为模块处理。 它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)。

image.png

功能介绍

image.png

初体验

image.png

image.png

下载依赖

image.png

image.png

image.png

webpack 五个核心概

1. Entry

入口(Entry)指示 webpack 以哪个文件为入口起点开始打包,分析构建内部依赖图。

2.Output

输出(Output)指示 webpack 打包后的资源 bundles 输出到哪里去,以及如何命

3. Loader

Loader 让 webpack 能 够 去 处 理 那 些 非 JavaScript 文 件 (webpack 自 身 只 理 解 JavaScript)

4. Plugins

插件(Plugins)可以用于执行范围更广的任务。插件的范围包括,从打包优化和压缩, 一直到重新定义环境中的变量等。

5.Mode

image.png

准备webpack配置文件

image.png

image.png

注意:配置了webpack文件( webpack.config.js), 执行只要输入 npx webpack

开发模式介绍

image.png

处理样式资源

image.png

1.处理CSS资源

image.png

image.png

image.png

2.处理less资源

image.png

注意:less-loader是将less 文件编译成css文件

3.处理sass资源

image.png

image.png

4.处理图片资源

image.png

image.png

asset 用于把图片转换为base64

image.png

5.修改输出文件目录

image.png

image.png

image.png

6. 自动清空上次打包的内容

image.png

7.处理字体图标资源

官方网www.iconfont.cn ,添加到购物车,然后添加到项目,再下载到本地

image.png

image.png

解压的文件,demo_index 为使用教程

image.png

image.png

入口文件main.js引入 iconfont.css文件

image.png

webpack.config.js配置文件

image.png

image.png

打包成功后,最后使用

image.png

image.png

image.png

8.处理其它的资源

image.png

如需要处理音频,视频等资源,直接在处理字体图标的test,加上要匹配的后缀就可以了,如mp3.mp4,avi 等

处理js资源

image.png

eslint

image.png

image.png

image.png

image.png

在webpack使用eslint

image.png

image.png

image.png

babel

image.png

可以统一写在webpack.config.js文件配置中

image.png

也可以分开写,webpack.config.js + babel.config.j文件中,

image.png

image.png

当要兼容promise 类的语法时,需要配合core-js使用

  1. 安装 npm i core-js
  2. 配置

image.png

rules:[
            {
                test:/\.js$/,
                exclude:/node_modules/,
                use:{
                    loader:'babel-loader',
                    options:{
                        presets: [
                            ["@babel/preset-env", {
                            targets: {
                              "chrome": "58",
                             
                            },
                            "corejs": "3",
                            "useBuiltIns": "usage"
                          }]
                          ]
                    }
                }
            }
        ]

处理HTML资源

不需要在HTML文件,手动引入打包的js文件,需要配置插件

image.png

image.png

模板的好处,template ,根据你想要的html模板去打包

image.png

image.png

自动化

image.png

image.png

image.png

此时启动指命变成 npx webpack serve 停止服务器ctrl +c
开发服务器:不会输出资源。在内存中编译打包的( 浏览器上可以看到结果 )

生产模式介绍

image.png

image.png

image.png

image.png

开发模式指令:npm run dev
生产模式指令: npm run build

生产模式的css处理

image.png

image.png

1. 需要把原有的style.loader修改为 MiniCssExtractPlugin.loader

2..引入 const MiniCssExtractPlugin = require("mini-css-extract-plugin");

3.image.png

4.会把所有的css文件都打包到了main.css文件中

image.png

css样式兼容性处理

image.png

image.png

注意,兼容性的配置,需要写在css.loader的下面,less-loader的上面

image.png

image.png

Css压缩

image.png

image.png

image.png

压缩后的结果

image.png

其它资源

image.png

总结

image.png