当前位置: 首页 > news >正文

webpack5 的五大核心配置(二)

webpack主要构成部分:
  1. entry 入口
  2. output 出口
  3. loaders 转化器
  4. plugins 插件
  5. mode 模式
  6. devServer 开发服务器
webpack.config.js 配置文件基本格式
module.exports={//入口文件entry:{},//出口文件output:{},//module rules  loadersmodule{};//插件plugins:[],//开发服务器devServer:{},//模式mode: " ",
};
详细讲解:

一:入口(Entry):告诉 webpack 应该使用哪个模块,来作为构建整个项目的开始
二:出口(Output):告诉 webpack 在哪里输出它所创建的 bundle,以及如何命名这些文件

1、单文件入口语法:
用法:entry: string | [string]

const path = require('path');
module.exports = {entry: './src/index.js ',output:{path:path.resolve(__dirname, 'dist'),filename:'bundle.js'}
};

2、多入口,单出口文件的配置:

const path = require('path');
module.exports = {
entry:['./src/index.js','./src/index2.js'],  //按照先后顺序一起打包 bundle.js
output:{path:path.resolve(__dirname, 'dist'),filename:'bundle.js'}
};

3、多入口,多出口文件的配置

const path = require('path');module.exports = {entry:{index:'./src/index.js',index2:'./src/index2.js'},output:{path:path.resolve(__dirname, 'dist'),filename:'[name].bundle.js'}};

还需要在index.html文件引入js文件的时候,内容改一下。这种方法引入比较繁琐,后面可以使用插件来完成这个功能。

三.加载器(Loader):webpack 只能理解 JS 和 JSON 文件,loader 让 webpack 能够去处理其他类型的文件,并将它们转换为有效模块,以供应用程序使用。
例如:css-loader | html-loader

1、处理css文件

(1)安装loader:npm i style-loader css-loader -D
(2)配置文件里的写法:

module:{rules:[{test:/\.css$/,use:['style-loader','css-loader'] //注意先写style-loader再写css-loader}]}

(3)然后执行webpack命令。

2、处理less文件

(1)安装loader:npm i style-loader css-loader less-loader -D
//如果装过style-loader css-loader这里可以不用写这两个loader
(2)配置文件里的写法:

  module:{rules:[{test:/\.less$/,use:['style-loader','css-loader','less-loader'] //注意先写style-loader再写css-loader}]
}

(3)然后执行webpack命令。

3、处理sass文件

(1)安装loader:npm i style-loader css-loader sass-loader -D
//如果装过style-loader css-loader这里可以不用写这两个loader
(2)配置文件里的写法:

  module:{rules:[{test:/\.s[a,c]ss$/,use:['style-loader','css-loader','sass-loader'] //注意先写style-loader再写css-loader}]}

(3)然后执行webpack命令。

注意:如果上面的操作中如安装less的时候,报错Vue安装loader报错:Syntax Error: Error: Cannot find module ‘less‘ 类似的信息,解决方法是:重新安装这个loader时@版本号就可以了,例如:npm i less-loader@6 -D就可以了。

4、处理图片资源

在webpack5中处理图片资源不用安装loader了,直接在配置文件中设置图片属性内容。

// 图片加载器
module: {rules: [{test: /\.(png|jpe?g|gif|webp|svg)$/,type: 'asset',parser: {dataUrlCondition: {// 小于10KB图片会转base64,  优点:减少请求数量  缺点:体积变大maxSize: 15 * 1024 // 4kb}},//设置图片打包后的图片路径generator: {// 输出图片名字filename: 'static/images/[hash:10][ext][query]'   //[hash:10] 表示hash值只取10位}}]
},
5、处理字体图标资源

前面省去了将字体图标引入文件的步骤。直接展示配置文件设置内容:

module: {rules: [// 图标{test: /\.(ttf|woff2?)$/,type: 'asset/resource',   generator: {// 输出名字filename: 'static/media/[hash:10][ext][query]'   //注意实际设置的路径}}]
},
  1. 安装babel-loder
    用于将 ES6 语法编写的代码转换为向后兼容的 JavaScript 语法。

(1)下载包管理工具

   npm i babel-loader @babel/core @babel/preset-env -D

(2)定义 Babel 配置文件:babel.config.js

module.exports = {presets: ["@babel/preset-env"],
};

presets 预设:就是一组 Babel 插件, 扩展 Babel 功能

  • @babel/preset-env: 一个智能预设,允许您使用最新的 JavaScript。
  • @babel/preset-react:一个用来编译 React jsx 语法的预设
  • @babel/preset-typescript:一个用来编译 TypeScript 语法的预设

(3)配置webpack.config.js

module: {rules: [// 图标{test: /\.js$/,exclude: /node_modules/, // 排除node_modules代码不编译loader: "babel-loader",},]
},
  1. 处理其他资源如音/视频等等
module: {rules: [{test: /\.(map3|map4|avi)$/,   //在这里加上就可以统一处理type: 'asset/resource',generator: {// 输出名字filename: 'static/media/[hash:10][ext][query]'  }]

四.插件(Plugins):插件是 webpack 的支柱功能,能够执行范围更广的任务,包括:打包优化、压缩、重新定义环境中的变量等
例如:html-webpack-plugin

1、eslint语法检查

在webpack5中eslint语法检查是个插件,它的实现步骤是:
(1)下载安装包:
npm i eslint-webpack-plugin eslint -D

(2)定义 Eslint 配置文件
在文件目录下新建:.eslintrc.js文件,配置如下内容:

module.exports = {// 继承 Eslint 规则extends: ["eslint:recommended"],env: {node: true, // 启用node中全局变量browser: true, // 启用浏览器中全局变量},parserOptions: {ecmaVersion: 6,sourceType: "module",},rules: {"no-var": 2, // 不能使用 var 定义变量},
};
更多规则详见:[规则文档](https://eslint.bootcss.com/docs/rules/)

(3)在webpack.config.js文件中配置

const path = require("path");
const ESLintWebpackPlugin = require("eslint-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: ["style-loader", "css-loader"],},]
},
plugins: [new ESLintWebpackPlugin({// 指定检查文件的根目录context: path.resolve(__dirname, "src"),}),],mode: "development",
}

(4)修改 js 文件代码
main.js文件

import count from "./js/count";
import sum from "./js/sum";
// 引入资源,Webpack才会对其打包
import "./css/iconfont.css";
import "./css/index.css";var result1 = count(2, 1);
console.log(result1);
var result2 = sum(1, 2, 3, 4);
console.log(result2);

(5)用webpack打包,生成会发现报错了,原因是main.js中不应该用var定义变量,按照.eslintrc.js定义的规则中,是不能用var 定义变量的,所以改成const后,打包就不会报错了。

五.模式(Mode):
development(优化打包速度,提供调试的辅助功能)开发
production(优化打包结果,打包之后代码的运行效率和性能优化)生产
none(最原始的打包)

六.devServer:(用于快速开发应用程序)热重载
devServer: {}

开发服务器&自动化
1、下载安装包

 npm i webpack-dev-server -D

2、配置webpack.config.js

module.exports = {entry: "./src/main.js",output: {path: path.resolve(__dirname, "dist"),filename: "static/js/main.js", // 将 js 文件输出到 static/js 目录中clean: true, // 自动将上次打包目录资源清空},module: {rules: [  // 开发服务器devServer: {host: "localhost", // 启动服务器域名port: "3000", // 启动服务器端口号open: true, // 是否自动打开浏览器},mode: "development",
};

3、运行指令

npx webpack serve

相关文章:

webpack5 的五大核心配置(二)

webpack主要构成部分: entry 入口output 出口loaders 转化器plugins 插件mode 模式devServer 开发服务器 webpack.config.js 配置文件基本格式 module.exports{//入口文件entry:{},//出口文件output:{},//module rules loadersmodule{};//插件plugins:[],//开发…...

【查询基础】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…...

git push使用

推送指定分支 将当前分支推送远程 git push origin HEAD:<branch-name> 这里的 HEAD 是一个特殊的指针&#xff0c;它指向当前分支的最新提交。这条命令会将当前分支的更改推送到远程的 master 分支。 示例 git push origin HEAD:main 当前分支是test&#xff0c;远…...

【iOS】多线程基础

【iOS】多线程基础 文章目录 【iOS】多线程基础前言进程与线程进程进程的状态进程的一个控制结构进程的上下文切换 线程为什么要用线程什么是线程线程和进程的关系线程的上下文切换 线程和进程的优缺点 小结 前言 笔者由于对于GCD不是很了解&#xff0c;导致了项目中网络请求哪…...

常用网站网址

目录 1.docker hub2.csdn 1.docker hub https://image.cgdcgd.cc/ 2.csdn https://www.csdn.net/ ​...

go语言切片

切片 切片是一种数据结构&#xff0c;这种数据结构便于使用和管理数据集合。切片是围绕动态数组的概念构建的&#xff0c;可以按需自动增长和缩小。切片的动态增长是通过内置函数 append 来实现的。这个函数可以快速且高效地增长切片。还可以通过对切片再次切片来缩小一个切片的…...

鸿蒙NEXT元服务:利用App Linking实现无缝跳转与二维码拉起

【效果】 元服务链接格式&#xff08;API>12适用&#xff09;&#xff1a;https://hoas.drcn.agconnect.link/ggMRM 【参考网址】 使用App Linking实现元服务跳转&#xff1a;文档中心 草料二维码&#xff1a;草料二维码生成器 【引言】 本文将详细介绍如何使用App Lin…...

网络药理学之薛定谔Schrödinge Maestro:6、分子对接(Glide、Ligand docking)和可视化

本人是win11&#xff0c;薛定谔版本是12.9。 官网&#xff1a;https://www.schrodinger.com/ 本篇文章的示例大分子蛋白PDB ID为4KNN&#xff0c;小分子配体的MOL ID为MOL004004。 本文部分图源来自知乎https://zhuanlan.zhihu.com/p/416698194&#xff0c;推荐为原作者贡献阅读…...

已解决ModuleNotFoundError: No module named ‘selenium‘

1. 错误提示 ModuleNotFoundError: No module named selenium&#xff0c;这意味着你试图导入一个名为 selenium 的模块&#xff0c;但Python找不到这个模块 2. 解决方案 安装缺失的模块: 如果你确定模块名称正确但仍然收到这个错误&#xff0c;那么可能是你没有安装这个模块…...

【Maven】依赖冲突如何解决?

准备工作 1、创建一个空工程 maven_dependency_conflict_demo&#xff0c;在 maven_dependency_conflict_demo 创建不同的 Maven 工程模块&#xff0c;用于演示本文的一些点。 什么是依赖冲突&#xff1f; 当引入同一个依赖的多个不同版本时&#xff0c;就会发生依赖冲突。…...

什么是EMS

EMS是能量管理系统&#xff08;Energy Management System&#xff09;的缩写&#xff0c;是一种集成的技术解决方案&#xff0c;旨在帮助企业和组织更有效地管理和优化其能源使用。EMS通过收集、分析和报告能源数据来识别节能机会&#xff0c;并提供工具以实施改进措施。 主要…...

26页PDF | 数据中台能力框架及评估体系解读(限免下载)

一、前言 这份报告详细解读了数据中台的发展历程、核心概念、能力框架及成熟度评估体系。它从阿里巴巴的“大中台&#xff0c;小前台”战略出发&#xff0c;探讨了数据中台如何通过整合企业内部的数据资源和能力&#xff0c;加速业务迭代、降低成本&#xff0c;并推动业务增长…...

【Vue3】【Naive UI】< a >标签

【Vue3】【Naive UI】< a >标签 超链接及相关属性其他属性 【VUE3】【Naive UI】&#xff1c;NCard&#xff1e; 标签 【VUE3】【Naive UI】&#xff1c;n-button&#xff1e; 标签 【VUE3】【Naive UI】&#xff1c;a&#xff1e; 标签 <a> 标签HTML中的一个锚&…...

分页查询日期格式不对

方式一:在属性上加入注解&#xff0c;对日期进行格式化 方式二:在 WebMvcConfiguration 中扩展Spring MVC的消息转换器&#xff0c;统一对日期类型进行格式化处理 /*** 统一转换处理扩展spring mvc* 后端返回前端的进行统一转化处理* param converters*/Overrideprotected voi…...

DAY140权限提升-Linux系统权限提升篇VulnhubPATH变量NFS服务Cron任务配合SUID

一、演示案例-Linux系统提权-Web&普通用户-SUID-NFS安全 NFS是一种基于TCP/IP 传输的网络文件系统协议&#xff0c;通过使用NFS协议&#xff0c;客户机可以像访问本地目录一样访问远程服务器中的共享资源。 https://www.virtualbox.org/wiki/Downloads https://www.vuln…...

HTTPS 的应用数据是如何保证完整性的?

在 HTTPS 中&#xff0c;确保 应用数据的完整性 是通过以下几个关键机制来实现的&#xff1a; 消息认证码&#xff08;MAC&#xff09;&#xff1a;用于确保数据在传输过程中未被篡改。加密&#xff1a;通过加密数据防止数据被窃取&#xff0c;并与 MAC 配合使用&#xff0c;确…...

Unity ShaderLab 实现3D物体描边

实现思路&#xff1a; 给物体添加第二个材质球&#xff0c;在shader的顶点着色器中使顶点的位置变大&#xff0c;然后在片元着色器中输出描边颜色。 shader Graph实现如下&#xff1a; ShaderLab实现如下&#xff1a; Shader "Custom/Outline" {Properties{[HDR]_…...

SQL进阶——C++与SQL进阶实践

在C开发中&#xff0c;SQL数据库的操作是开发者常见的任务之一。虽然前面我们已经介绍了如何在C中通过数据库连接执行基本的SQL查询&#xff0c;但在实际项目中&#xff0c;我们通常需要更加复杂和高效的数据库操作。存储过程与函数的调用、复杂SQL查询的编写、以及动态构造SQL…...

AIGC--------AIGC在医疗健康领域的潜力

AIGC在医疗健康领域的潜力 引言 AIGC&#xff08;Artificial Intelligence Generated Content&#xff0c;人工智能生成内容&#xff09;是一种通过深度学习和自然语言处理&#xff08;NLP&#xff09;等技术生成内容的方式。近年来&#xff0c;AIGC在医疗健康领域展现出了极…...

node.js中实现MySQL的增量备份

有时候&#xff0c;我们需要对生产库进行备份&#xff0c;不要求实时性很高&#xff0c;大概每天一次就行&#xff0c;为性能考虑&#xff0c;只备份最新更改内容&#xff0c;即增量备份即可&#xff0c;这种场景下对DB的设计和备份语句有所要求。 首先要求按源表各字段定义目标…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...