随笔分类 -  webpack

摘要:基本使用 Webpack 是一个静态资源打包工具。 它会以一个或多个文件作为打包的入口,将我们整个项目所有文件编译组合成一个或多个文件输出出去。 输出的文件就是编译好的文件,就可以在浏览器段运行了。 我们将 Webpack 输出的文件叫做 bundle。 功能介绍 Webpack 本身功能是有限的: 开发模式:仅能编译 JS 中的 ES Module 语法 生产模式:能编译 JS 中的 ES Module 语法,还能压缩 JS 代码 阅读全文
posted @ 2023-06-09 11:28 风紧·扯呼 阅读(48) 评论(0) 推荐(0)
摘要:自动清空上次打包资源 1. 配置 const path = require("path"); module.exports = { entry: "./src/main.js", output: { path: path.resolve(__dirname, "dist"), filename: "static/js/main.js", clean: true, // 自动将上次打包目录资源清空 }, module: { rules: [ { // 用来匹配 .css 结尾的文件 test: /\.css$/, // use 数组里面 Loader 执行顺序是从右到左 use: ["style-loader", "css-loader"], }, { test: /\.less$/, use: ["style-loader", "css-loader", "less-loader"], }, { test: /\.s[ac]ss$/, use: ["style-loader", "css-loader", "sass-loader"], }, { test: /\.styl$/, us 阅读全文
posted @ 2023-06-09 11:27 风紧·扯呼 阅读(20) 评论(0) 推荐(0)
摘要:处理样式资源 本章节我们学习使用 Webpack 如何处理 Css、Less、Sass、Scss、Styl 样式资源 介绍 Webpack 本身是不能识别样式资源的,所以我们需要借助 Loader 来帮助 Webpack 解析样式资源 我们找 Loader 都应该去官方文档中找到对应的 Loader,然后使用 官方文档找不到的话,可以从社区 Github 中搜索查询 Webpack 官方 Loader 文档 阅读全文
posted @ 2023-06-09 11:26 风紧·扯呼 阅读(26) 评论(0) 推荐(0)
摘要:基本配置 在开始使用 Webpack 之前,我们需要对 Webpack 的配置有一定的认识。 5 大核心概念 entry(入口) 指示 Webpack 从哪个文件开始打包 output(输出) 指示 Webpack 打包完的文件输出到哪里去,如何命名等 loader(加载器) webpack 本身只能处理 js、json 等资源,其他资源需要借助 loader,Webpack 才能解析 阅读全文
posted @ 2023-06-09 11:26 风紧·扯呼 阅读(16) 评论(0) 推荐(0)
摘要:开发模式介绍 开发模式顾名思义就是我们开发代码时使用的模式。 这个模式下我们主要做两件事: 编译代码,使浏览器能识别运行 开发时我们有样式资源、字体图标、图片资源、html 资源等,webpack 默认都不能处理这些资源,所以我们要加载配置来编译这些资源 代码质量检查,树立代码规范 提前检查代码的一些隐患,让代码运行时能更加健壮。 提前检查代码规范和格式,统一团队编码风格,让代码更优雅美观。 阅读全文
posted @ 2023-06-09 11:26 风紧·扯呼 阅读(34) 评论(0) 推荐(0)
摘要:处理字体图标资源 1. 下载字体图标文件 打开阿里巴巴矢量图标库 选择想要的图标添加到购物车,统一下载到本地 2. 添加字体图标资源 src/fonts/iconfont.ttf src/fonts/iconfont.woff src/fonts/iconfont.woff2 src/css/iconfont.css 注意字体文件路径需要修改 src/main.js 阅读全文
posted @ 2023-06-09 11:25 风紧·扯呼 阅读(16) 评论(0) 推荐(0)
摘要:处理图片资源 过去在 Webpack4 时,我们处理图片资源通过 file-loader 和 url-loader 进行处理 现在 Webpack5 已经将两个 Loader 功能内置到 Webpack 里了,我们只需要简单配置即可处理图片资源 1. 配置 const path = require("path"); module.exports = { entry: "./src/main.js", output: { path: path.resolve(__dirname, "dist"), filename: "main.js", }, module: { rules: [ { // 用来匹配 .css 结尾的文件 test: /\.css$/, // use 数组里面 Loader 执行顺序是从右到左 use: ["style-loader", "css-loader"], }, { test: /\.less$/, use: ["style-loader", "css-loader", "less-loader"], }, { test: /\.s[ac]ss$/, use: 阅读全文
posted @ 2023-06-09 11:24 风紧·扯呼 阅读(26) 评论(0) 推荐(0)
摘要:处理 Html 资源 1. 下载包 npm i html-webpack-plugin -D 2. 配置 webpack.config.js const path = require("path"); const ESLintWebpackPlugin = require("eslint-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); module.exports = { entry: "./src/main.js", output: { path: path.resolve(__dirname, "dist"), filename: "static/js/main.js", // 将 js 文件输出到 static/js 目录中 clean: true, // 自动将上次打包目录资源清空 }, module: { rules: [ { // 用来匹配 .css 结尾的文件 test: /\.css$/, // use 数组里面 Loader 执行顺序是从右到左 use: ["sty 阅读全文
posted @ 2023-06-09 11:24 风紧·扯呼 阅读(13) 评论(0) 推荐(0)
摘要:处理 js 资源 有人可能会问,js 资源 Webpack 不能已经处理了吗,为什么我们还要处理呢? 原因是 Webpack 对 js 处理是有限的,只能编译 js 中 ES 模块化语法,不能编译其他语法,导致 js 不能在 IE 等浏览器运行,所以我们希望做一些兼容性处理。 其次开发中,团队对代码格式是有严格要求的,我们不能由肉眼去检测代码格式,需要使用专业的工具来检测。 针对 js 兼容性处理,我们使用 Babel 来完成 针对代码格式,我们使用 Eslint 来完成 我们先完成 Eslint,检测代码格式无误后,在由 Babel 做代码兼容性处理 阅读全文
posted @ 2023-06-09 11:23 风紧·扯呼 阅读(12) 评论(0) 推荐(0)
摘要:Css 处理 提取 Css 成单独文件 Css 文件目前被打包到 js 文件中,当 js 文件加载时,会创建一个 style 标签来生成样式 这样对于网站来说,会出现闪屏现象,用户体验不好 我们应该是单独的 Css 文件,通过 link 标签加载性能才好 1. 下载包 npm i mini-css-extract-plugin -D 阅读全文
posted @ 2023-06-09 11:22 风紧·扯呼 阅读(10) 评论(0) 推荐(0)
摘要:html 压缩 默认生产模式已经开启了:html 压缩和 js 压缩 不需要额外进行配置 阅读全文
posted @ 2023-06-09 11:22 风紧·扯呼 阅读(8) 评论(0) 推荐(0)
摘要:处理其他资源 开发中可能还存在一些其他资源,如音视频等,我们也一起处理了 1. 配置 const path = require("path"); module.exports = { entry: "./src/main.js", output: { path: path.resolve(__dirname, "dist"), filename: "static/js/main.js", // 将 js 文件输出到 static/js 目录中 clean: true, // 自动将上次打包目录资源清空 }, module: { rules: [ { // 用来匹配 .css 结尾的文件 test: /\.css$/, // use 数组里面 Loader 执行顺序是从右到左 use: ["style-loader", "css-loader"], }, { test: /\.less$/, use: ["style-loader", "css-loader", "less-loader"], }, { test: /\.s[ac]ss$/, use: ["style-loader", 阅读全文
posted @ 2023-06-09 11:21 风紧·扯呼 阅读(10) 评论(0) 推荐(0)
摘要:修改输出资源的名称和路径 1. 配置 const path = require("path"); module.exports = { entry: "./src/main.js", output: { path: path.resolve(__dirname, "dist"), filename: "static/js/main.js", // 将 js 文件输出到 static/js 目录中 }, module: { rules: [ { // 用来匹配 .css 结尾的文件 test: /\.css$/, // use 数组里面 Loader 执行顺序是从右到左 use: ["style-loader", "css-loader"], }, { test: /\.less$/, use: ["style-loader", "css-loader", "less-loader"], }, { test: /\.s[ac]ss$/, use: ["style-loader", "css-loader", "sass-loader"], }, { test: /\.styl$/, us 阅读全文
posted @ 2023-06-09 11:20 风紧·扯呼 阅读(33) 评论(0) 推荐(0)
摘要:生产模式介绍 生产模式是开发完成代码后,我们需要得到代码将来部署上线。 这个模式下我们主要对代码进行优化,让其运行性能更好。 优化主要从两个角度出发: 优化代码运行性能 优化代码打包速度 生产模式准备 我们分别准备两个配置文件来放不同的配置 1. 文件目录 ├── webpack-test (项目根目录) ├── config (Webpack配置文件目录) │ ├── webpack.dev.js(开发模式配置文件) │ └── webpack.prod.js(生产模式配置文件) ├── node_modules (下载包存放目录) ├── src (项目源码目录,除了html其他都在src里面) │ └── 略 ├── public (项目html文件) │ └── index.html ├── .eslintrc.js(Eslint配置文件) ├── babel.config.js(Babel配置文件) └── package.json (包的依赖管理配置文件) 阅读全文
posted @ 2023-06-09 11:20 风紧·扯呼 阅读(37) 评论(0) 推荐(0)
摘要:补充 entry 单个入口 module.exports = { // 可简写成 entry:'./path/to/my/entry/file.js' entry: { main: './path/to/my/entry/file.js', }, }; 阅读全文
posted @ 2023-06-09 11:11 风紧·扯呼 阅读(11) 评论(0) 推荐(0)
摘要:开发服务器&自动化 每次写完代码都需要手动输入指令才能编译代码,太麻烦了,我们希望一切自动化 1. 下载包 npm i webpack-dev-server -D 2. 配置 webpack.config.js const path = require("path"); const ESLintWebpackPlugin = require("eslint-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); module.exports = { entry: "./src/main.js", output: { path: path.resolve(__dirname, "dist"), filename: "static/js/main.js", // 将 js 文件输出到 static/js 目录中 clean: true, // 自动将上次打包目录资源清空 }, module: { rules: [ { // 用来匹配 .css 结尾的文件 test: /\.css$/, 阅读全文
posted @ 2023-06-09 11:10 风紧·扯呼 阅读(8) 评论(0) 推荐(0)
摘要:webpack基础-总结 本章节我们学会了 Webpack 基本使用,掌握了以下功能: 两种开发模式 开发模式:代码能编译自动化运行 生产模式:代码编译优化输出 Webpack 基本功能 开发模式:可以编译 ES Module 语法 生产模式:可以编译 ES Module 语法,压缩 js 代码 Webpack 配置文件 阅读全文
posted @ 2023-06-09 11:09 风紧·扯呼 阅读(8) 评论(0) 推荐(0)
摘要:Plugin 原理 Plugin 的作用 通过插件我们可以扩展 webpack,加入自定义的构建行为,使 webpack 可以执行更广泛的任务,拥有更强的构建能力。 Plugin 工作原理 webpack 就像一条生产线,要经过一系列处理流程后才能将源文件转换成输出结果。 这条生产线上的每个处理流程的职责都是单一的,多个流程之间有存在依赖关系,只有完成当前处理后才能交给下一个流程去处理。 插件就像是一个插入到生产线中的一个功能,在特定的时机对生产线上的资源做处理。webpack 通过 Tapable 来组织这条复杂的生产线。 webpack 在运行过程中会广播事件,插件只需要监听它所关心的事件,就能加入到这条生产线中,去改变生产线的运作。 webpack 的事件流机制保证了插件的有序性,使得整个系统扩展性很好。 ——「深入浅出 Webpack」 阅读全文
posted @ 2023-06-09 11:05 风紧·扯呼 阅读(87) 评论(0) 推荐(0)
摘要:Loader 原理 loader 概念 帮助 webpack 将不同类型的文件转换为 webpack 可识别的模块。 loader 执行顺序 分类 pre: 前置 loader normal: 普通 loader inline: 内联 loader post: 后置 loader 执行顺序 4 类 loader 的执行优级为:pre > normal > inline > post 。 相同优先级的 loader 执行顺序为:从右到左,从下到上。 阅读全文
posted @ 2023-06-09 11:05 风紧·扯呼 阅读(57) 评论(0) 推荐(0)
摘要:React 脚手架 开发模式配置 // webpack.dev.js const path = require("path"); const ESLintWebpackPlugin = require("eslint-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin"); const CopyPlugin = require("copy-webpack-plugin"); const getStyleLoaders = (preProcessor) => { return [ "style-loader", "css-loader", { loader: "postcss-loader", options: { postcssOptions: { plugins: [ "postcss-preset-env", // 能解 阅读全文
posted @ 2023-06-09 11:03 风紧·扯呼 阅读(25) 评论(0) 推荐(0)