webpack编译打包从入门到放弃

news2025/1/16 5:32:45
写在前面的话:推荐学习vite。当然,我更推荐你直接上手体验webpack_demo与vite_demo
看看他们的编译、打包、热更新速度等差距。你也可以直接通过vite开发lib库,一句话就是比webpack快,它有的vite都有,并且更好!

1.安装webpack

npm install webpack webpack-cli --save-dev


 

2.添加命令

在package.json文件中添加启动命令


 

3.打包

webpack.config.js文件

通过配置文件构建:npx webpack --config webpack.config.js

4.文件结构

src:用于存放代码,一般入口为index.js

index.html:默认的启动文件

webpack.config.js:自定义配置

dist:打包输出目录

可以通过修改webpackconfig.js进行修改配置,mode为production代码会压缩,未使用到的代码不会编译;为development时,连注释的代码也打包进去了

5.启动项目

运行打包后的项目,

可以通过cd 到dist目录,然后通过在所在目录运行命令npx serve启动,默认页面是该目录下的index.html文件,如无则显示该目录下列表

6.未使用不打包编译(mode为development&&mode_modules除外)

注意:

1.如果引入了node_modules下面的包,只要导入了就会被打包进去。

2.mode为development时,连注释、import未使用的也会被打包进去哦

不使用不编译,即使import导入了。使用到了的才会编译打包,但是默认编译的代码没有进行转换,比如箭头函数、promise等。

入口文件index.js从a.js和b.js引入了一些东西,自身定义了一个test函数,但是并没有使用到,打包后的/dist/main.js中的内容为空!

本地import导入,但是打包后的为空: 

引入了node_modules下面的包,只要导入了就会被打包进去

通过npm i lodash安装,然后引入lodash,lodash被打包进去了,虽然没有使用到:

 lodash被打包进去了:


7.只会打包使用东西

但是这里只进行了打包操作,但是并没有对代码进行转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。这里可以通过配置解决这个问题,因为默认是只有打包。

8.babel

npm install -D babel-loader @babel/core @babel/preset-env webpack

然后配置rules

9.loaders

有css、less、图片导入等loader

10.导出

我在src/index.js文件中导出了几个东西,但是打包后并没有什么用,需要在

webpack.config.js设置library,这里要设置导出的,会挂载在window上,window.ouyang

module.exports = {
  mode: "production",//production|development
  entry: './src/index.js',//打包编译入口,这里可以是数组导出多个['./src/a.js', './src/b.js']
  output: {
    filename: 'main.js',//输出名字
    path: path.resolve(__dirname, 'dist'),//输出地址
    clean: true, // 在生成文件之前清空 output 目录
    // https://webpack.docschina.org/configuration/output/#outputlibrary
    // 这里要设置导出的,会挂载在window上,window.ouyang
    library: "ouyang",
    libraryTarget: 'window',
    libraryExport: 'default'

  }
}

11.自动打包

先安装这两个插件

npm i html-webpack-plugin

npm i webpack-dev-server -D

体验了下,没有vite更新快。。。

配置:

const HtmlWebpackPlugin = require("html-webpack-plugin"); // 引入 html-webpack-plugin 插件
 
plugins: [
    new HtmlWebpackPlugin({
      // 以 public/index.html 为模板创建文件
      // 新的html文件有两个特点:1. 内容和源文件一致 2. 自动引入打包生成的js等资源
      template: path.resolve(__dirname, "/public/index.html"),
    }),
  ],
  // 开发服务器
  devServer: {
    host: "localhost", // 启动服务器域名
    port: "6260", // 启动服务器端口号
    open: true, // 是否自动打开浏览器
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/678814.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NCI-NFCEE

10.5 NFCEE 状态 NFCC 使用此控制消息向 DH 通知启用的 NFCEE 状态的变化。 NFCC 发送 NFCEE_STATUS_NTF 来报告启用的 NFCEE 状态的变化。 对于任何禁用或无响应的 NFCEE,NFCC 不应发送 NFCEE_STATUS_NTF。 当启用 NFCEE 并且 NFCC 检测到与该 NFCEE 通信时存在不…

C++布隆过滤器

目录 布隆过滤器介绍实现哈希函数布隆过滤器删除 小结使用——题目 布隆过滤器 介绍 在许多场景下,如设置昵称时,往往要求唯一性。这时就需要高效判断该昵称是否被使用过。 使用红黑树的kv模型或者哈希表来组织昵称集合,可以,但缺…

Qt中的日期和时间

目录 QDate 示例(打印年月日): QTime 示例(显示时分秒): QDateTime 示例(显示当前日期和时间): 示例(分别取出 年 月 日 时 分 秒)&#xff…

牛客网专项练习——C语言错题集(8)

文章目录 字符串拼接和拷贝while 与 fortypedef 和 define浮点类型的组成部分 字符串拼接和拷贝 这题并没有难度,但不知为什么我把该题空着。 strcpy 用于拷贝字符串,strcat 用于拼接字符串。 while 与 for 假如 i 0,while 循环里 s1 被执…

【AI机器学习入门与实战】机器学习算法都有哪些分类?

👍【AI机器学习入门与实战】目录 🍭基础篇 🔥 第一篇:【AI机器学习入门与实战】AI 人工智能介绍 🔥 第二篇:【AI机器学习入门与实战】机器学习核心概念理解 🔥 第三篇:【AI机器学习入…

Z变换方程转化为差分方程

将Z变换方程转换为差分方程的过程称为反Z变换。反Z变换是将信号从复频域转换为时间域的过程。如果我们已知一个系统的传递函数,即Z变换方程: H ( z ) Y ( z ) X ( z ) b n b n − 1 z − 1 ⋯ b 0 z − n 1 a n a n − 1 z − 1 ⋯ a 0 z − n 0…

AVL 树

目录 AVL树的概念AVL树节点的定义AVL树的插入AVL树的旋转左单旋(parent->_bf 2 && cur->_bf 1)a,b,c当高度为0a,b,c当高度为1a,b,c当高度为2a,b,c当高度为...... 右单旋(parent->_bf -2 && cur->_bf -1)a,b,c当高度为0a,b,c当高度为1a,b,c当高…

强化学习从基础到进阶-案例与实践[4]:深度Q网络-DQN、double DQN、经验回放、rainbow、分布式DQN

【强化学习原理项目专栏】必看系列:单智能体、多智能体算法原理项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍:【强化学习原理项目专栏】必看系列:单智能体、多智能体算法原理项目实战、相关技巧…

Azkaban初认识

Azkaban初认识 文章目录 Azkaban初认识Azkaban是什么?为什么需要工作流调度系统?常见的工作流调度系统Azkaban 与 Oozie的对比 Azkaban是什么? Azkaban是一个开源的分布式工作流管理器,在LinkedIn实施,以解决Hadoop作业…

RT-Thread-03-栈空间分配

栈空间分配 线程状态转换图: 系统滴答时钟 每个操作系统都存在一个系统时钟,是操作系统中最小的时钟单位。这个时钟负责系统和时间相关的一些操作。这个时钟由硬件定时器的定时中断产生。 系统时钟的频率需要根据芯片的处理能力来决定, 频…

【MySQL基础 | 第一篇】数据处理之基本查询

前言 查询语句属于DML(Data Manipulation Language)数据操作语言的其中一种,用于从数据库中提取所需的数据。通过灵活的条件和组合,查询语句帮助用户有效地获取、过滤和排序数据,满足各种信息需求。 文章目录 前言1️⃣…

团体程序设计天梯赛-练习集L1篇⑨

🚀欢迎来到本文🚀 🍉个人简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的普通人。 🏀个人主页:陈童学哦CSDN 💡所属专栏:PTA 🎁希望各…

编译原理笔记17:自下而上语法分析(4)LR(0)、SLR(1) 分析表的构造

目录 LR(0) 文法LR(0) 分析表的构造例 SLR(1) 文法SLR 分析表构造 非 SLR(1) 文法举例二义文法都不是 SLR(1) 文法不是二义文法的非 SLR(1) 文法 LR(0) 文法 若一个文法 G 的拓广文法 G’ 的识别活前缀的自动机中的每个状态(项目集)均不存在下述情况&…

【一文通】C/C++与Go语言混合编程入门级教程(Windows平台完成)

一、概述 Go语言可以通过自带的 cgo 工具进行 CGO 混合编程,这个工具放在go安装目录的 pkg\tool 下,其源代码则在 src\runtime\cgo 里面,当然作为入门教程本文不打算对cgo的实现原理进行深入研究,仅从 Hello World 的角度来实际体…

快速查询银行卡发卡省市和归属银行,了解自己的财务状况!

API接口是现代软件开发的基本组成部分。它们允许应用程序通过互联网连接到其他软件系统,并从这些系统中获取或传输数据。银行卡归属地查询API接口是为开发人员提供的一种工具,可以帮助他们轻松地查询银行卡的归属地信息。在本文中,我们将介绍…

内网横向移动—IPCATschtasks

内网横向移动—IPC&AT&schtasks 1. IPC介绍1.1. IPC利用条件关系1.1.1. IPC$空连接介绍1.1.2. 139与445端口介绍1.1.3. 默认共享 1.2. IPC连接问题1.2.1. IPC连接失败原因1.2.2. IPC连接常见错误 2. 横向移动常用命令2.1. IPC命令介绍2.1.1. IPC常用命令演示2.1.1.1. 建…

docker非root用户下取消sudo前缀

解决非root用户下执行docker命令提示权限不足,必须添加sudo的问题。 第一步:执行 sudo gpasswd aby docker 命令,将当前用户aby加入docker组中。 第二步:执行 sudo chmod arw /var/run/docker.sock 命令修改sock权限

数据结构之堆——算法与数据结构入门笔记(六)

本文是算法与数据结构的学习笔记第六篇,将持续更新,欢迎小伙伴们阅读学习。有不懂的或错误的地方,欢迎交流 引言 当涉及到高效的数据存储和检索时,堆(Heap)是一种常用的数据结构。上一篇文章中介绍了树和完…

chatgpt赋能python:Python列表转字符串——从新手到大师

Python列表转字符串——从新手到大师 在Python编程中,列表和字符串是非常常用的数据类型。有时候,我们需要将一个列表转换为一个字符串,以方便进行各种操作。幸运的是,Python内置了一些函数和方法,可以轻松地将列表转…

7Z045 引脚功能详解

本文针对7Z045芯片,详细讲解硬件设计需要注意的技术点,可以作为设计和检查时候的参考文件。问了方便实用,按照Bank顺序排列,包含配置Bank、HR Bank、HP Bank、GTX Bank、供电引脚等。 参考文档包括: ds191-XC7Z030-X…