Webpack

Webpack高级优化 本章节主要介绍 Webpack 高级配置。所谓高级配置其实就是进行 Webpack 优化,让我们代码在编译/运行时性能更好~ 阅读详情

package.json

{
  "name": "webpackexercise", //包名称
  "version": "1.0.0", //版本号
  "description": "",
  "main": "index.js", //包执行入口
  "scripts": { //自定义脚本命令功能
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

运行自定义命令: npm run命令名 //如 npm run test, npm run dev

npm更换淘宝镜像: npm config set registry https://registry.npm.taobao.org

npm install 参数:
-s(--save) 写入dependencies生产环境的依赖 ,npm版本5以上默认启用该参数
-d(--save-dev) 写入devDependencies开发环境的依赖
npm install时 dependencies 和 devDependencies 下的依赖都会被安装
npm install --only=dev //指定安装开发环境依赖
npm install --only=prod //指定安装生产环境依赖
包发布后,别人npm install只会安装dependencies下的依赖,因此dependencies一般
放功能相关依赖, devDependencies放本地开发相关依赖

语义化版本
^version:中版本和小版本
^1.0.1 -> 1.x.x
npm install时自动安装1.x.x中的最新版本
~version: 小版本
~1.0.1 -> 1.0.x
npm install时自动安装1.0 .x中的最新版本
version: 特定版本

npm install过程

  • 寻找报版本信息文件(package.json),依照它来进行安装
  • 查找package.json中的依赖,并检查项目中其他的版本信息文件
  • 如果发现了新包,就更新版本信息文件

package-lock.json
package-lock.json 是在 npm install时候生成一份文件,用来记录当前状态下实际安装的各个npm package的具体来源和版本号。
npm最新的版本就开始提供自动生成package-lock.json功能,为的是让开发者知道只要你保存了源文件,到一个新的机器上、或者新的下载源,只要按照这个package-lock.json所标示的具体版本下载依赖库包,就能确保所有库包与你上次安装的完全一样。

webpack.config.js

  • Entry:入口,Webpack 执行构建的第一步将从 Entry 开始,可抽象成输入。
  • Module:模块,在 Webpack 里一切皆模块,一个模块对应着一个文件。Webpack 会从配置的 Entry开始递归找出所有依赖的模块。
  • Chunk:代码块,一个 Chunk 由多个模块组合而成,用于代码合并与分割。
  • Loader:模块转换器,用于把模块原内容按照需求转换成新内容。
  • Plugin:扩展插件,在 Webpack 构建流程中的特定时机注入扩展逻辑来改变构建结果或做你想要的事情。
  • Output:输出结果,在 Webpack 经过一系列处理并得出最终想要的代码后输出结果。
const path = require('path');
const uglifyJSPlugin = require('uglifyjs-webpack-plugin')

module.exports = {
  // JavaScript 执行入口文件
  entry: './main.js', //如果不指定默认入口是 /src/index.js
  output: {
    // 把所有依赖的模块合并输出到一个 bundle.js 文件
    filename: 'bundle.js',
    // 输出文件都放到 dist 目录下
    path: path.resolve(__dirname, './dist'),
  },
  devServer: { //对webpack-dev-server进行配置
  	port: 8000, //指定端口
  	publicPath: '/dist' //指定打包后的资源路径
  },
  module: {
  	resolve: {
  		extensions: ['.jsx', '.vue'] //指定哪些后缀可以省略
  	}
  	rules: [
      {
  	  	test: /\.css$/, //正则表达式规定哪种文件需要被处理
  	  	use : [
  	  		'style-loader', //style-loader根据样式生成标签插入文件
			'css-loader?minimize', //使用哪些loader处理,css-loader负责解析css文件
  	  	],
  	  	exclude: /node_modules/  //将node_modules排除在外
  	  	include: 
  	  }
  	]
  },
  plugins: [
  	new uglifyJSPlugin() //压缩文件
  ]
};

__dirname: 返回js所在文件夹的绝对路径
__filename: 返回被执行的 js 的绝对路径

webpack-dev-server:实时监控,当发生改变时动态打包。在打包时不会生成文件。

loader 文件加载器

Loader通过module.rules 数组配置了一组规则,告诉 Webpack 在遇到哪些文件时使用哪些 Loader 去加载和转换

  • loader需要手动安装
  • use 属性的值需要是一个由 Loader 名称组成的数组,Loader 的执行顺序和配置顺序相反;
  • 每一个 Loader 都可以通过 URL querystring 的方式传入参数,例如 css-loader?minimize 中的minimize 告诉 css-loader 要开启 CSS 压缩。

给 Loader 传入属性的方式除了有 querystring 外,还可以通过 Object 传入,以上的 Loader 配置可以修改为如下:

use: [
  'style-loader', 
  {
    loader:'css-loader',
    options:{
      minimize:true,
    }
  }
]

plugin

Webpack 是通过 plugins 属性来配置需要使用的插件列表的。 plugins 属性是一个数组,里面的每一项都是插件的一个实例,在实例化一个组件时可以通过构造函数传入这个组件支持的配置属性。

babel

安装babel
npm install @babel/core @babel/cli -g
安装转换规则
npm install @babel/preset-env   //高版本es代码转换低版本

指定规则编译
babel src/index.js --presets=@babel/preset-env

在package.json中添加babel规则

"babel": {
	"presets": ["@babel/preset-env"] 
}

在.babelrc文件中配置babel规则

{
	"presets": ["@babel/preset-env"]
}

webpack.congif.js中

DLL

【前端知识之webpack】webpack的热更新 本系列主要整理前端面试中需要掌握的知识点。本节介绍webpack的热更新。 阅读详情

相关推荐

webpack学习系列(一),安装webpack与webpack-cli

一、问题描述在安装webpack时,输入webpack -v提示我需要安装webpack-cli,如图:二、解决因为在webpack 3中,webpack本身和它的CLI以前都是在同一个包中,但在第4版中,他们已经将两者分开来更好地管理它们。所以用 npm install webpack-cli -g 命令全局安装webpack-cli即可,当然,网络不行的小伙伴可以用cnpm,这里就不多说了。安...

qq_31847185的博客 1万+

Webpack5 踩坑之(html-webpack-plugin)

2021 开工第一天就给我个大大的惊喜。 ERROR in Error: The loader "/home/project/vue3-demo/node_modules/html-webpack-plugin/lib/loader.js!/home/project/vue3-demo/public/index.html" didn't return html. - index.js:339 HtmlWebpackPlugin.evaluateCompilationResult [vu

vv_bug 1万+

长短期记忆网络(LSTM)预测模型及其Python和MATLAB实现

LSTM 通过独特的门控机制解决了传统 RNN 的梯度消失和梯度爆炸问题,使其在处理长序列时具有显著优势。随着技术的不断发展,LSTM 及其变种(如 Bi-directional LSTM、Stacked LSTM 等)有望在更复杂的任务中发挥重要作用。2. **可视化真实值和预测值**:通过绘图来比较真实值和预测值,判断模型的准确性。2. **输入门(Input gate)**:决定当前的输入信息对细胞状态的影响。1. **细胞状态(Cell state)**:保持信息在时间步之间的传递。

qq_45441438的博客 2055

【webpack】webpack-dev-server的安装

爱爱爱

闫小样丶的博客 3818

Eplan P8自动线号生成全攻略:从电位定义点到连接编号的完整流程

本文详细解析了Eplan P8自动线号生成的全流程,从电位定义点的创建配置到连接编号的标准化管理,帮助电气设计人员提升图纸规范性和工作效率。重点介绍了自动编号方案的定义与调整技巧,以及企业级标准化实施建议,是掌握Eplan P8自动线号功能的实用指南。

weixin_29254029的博客 510

华为OD机试 C++【TLV解析】

这里的valueOffset指的是value在整串消息里的起始位置(从0开始数)。这表示tag是15(十六进制的0F),length是4,接着的8个字符是value的内容。你收到了一串由两端设备传递的TLV格式的消息,现在你需要根据这串消息生成一个对应的(tag, length, valueOffset)列表。tag是15,对应的数据长度为4,value从第3个字节开始,所以偏移量为2。第二行:一个数字n,表示我们给出的tag的数量(0 < n < 1000)。第一行:一串消息,长度不超过10000。

wtswts1232的博客 482

Webpack——Webpack简介

Webpack简介、安装、打包

码说芯语的博客 2258

深度强化学习在足式机器人中的应用 (一):基础原理与仿真环境

我们将首先深入探讨其背后的核心挑战与技术栈,然后详细推导机器人学和强化学习的基本数学原理,特别是剖析在机器人控制领域表现卓越的PPO算法。下面的独立Python脚本展示了Isaac Gym的基本API用法,加载一个Go1机器人(假设URDF已准备好),并让它执行一个简单的预设动作(正弦波运动),以此来熟悉仿真流程。:代码的核心是直接操作GPU上的PyTorch张量,避免了CPU和GPU之间的数据拷贝,这是实现高性能的关键。:所有计算(如伪策略中的正弦波计算)都应该是向量化的,一次性为所有。

VectorShift的博客 228

关于 webpack 总结

关于 webpack 在windows安装总结 目录 关于 webpack 在windows安装总结 1、安装webpack 查看webpack的可用版本号 npm view webpack versions 安装指定版本的webpack npm install webpack@4.10.1 -g 2、安装webpack-cli 查看webp...

csp123258的专栏 1688

【保姆级教程】YOLOv8_Pose多目标+关键点检测:训练自己的数据集

【保姆级教程】YOLOv8_Pose多目标+关键点检测:训练自己的数据集

m0_51579041的博客 1万+

实战落地!Python抓取股票历史数据:开盘/收盘/成交量全维度爬取(附数据清洗+可视化)

股票历史数据抓取的核心是“数据准确性+完整性”,网页爬取适合小批量、个性化需求,API调用适合批量、标准化需求。多市场数据抓取:适配港股(00700.HK)、美股(AAPL)的抓取逻辑;高频数据抓取:抓取分钟级、小时级行情数据,用于短线量化策略;财务数据扩展:抓取市盈率、市净率、净利润等财务指标,结合价格数据做基本面分析;量化策略回测:将清洗后的数据接入Backtrader、VNPY等量化框架,验证策略有效性。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1740

[webpack] webpack 从入门到 所有

官网地址 webpack中文 以server.js为接入点: 'use strict'; require('core-js/fn/object/assign'); const webpack = require('webpack'); const WebpackDevServer = require('webpack-dev-server'); const config = requir...

haliofwu的专栏 2348

luks-磁盘加密工具

linux磁盘加密配置工具及步骤详解

zdd56789的博客 120

【Webpack 进阶】Webpack 打包后的代码是怎样的?

webpack是我们现阶段要掌握的重要的打包工具之一,我们知道webpack会递归的构建依赖关系图,其中包含应用程序的每个模块,然后将这些模块打包成一个或者多个bundle。 那么webpack打包后的代码是怎样的呢?是怎么将各个bundle连接在一起的?模块与模块之间的关系是怎么处理的?动态import()的时候又是怎样的呢? 本文让我们一步步来揭开webpack打包后代码的神秘面纱 准备工作 创建一个文件,并初始化 mkdir learn-webpack-out...

wangxi06的专栏 1347

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

webpack4升级到webpack5经验总结

最近接手了公司内部webpack相关的依赖包,于是打算优化一波。考虑到webpack5已经正式发布近两年,跟webpack相关的依赖包应该适配的差不多了,于是打算先把webpack4升级到webpack5,然后基于webpack5再进行优化。 升级前用的是 "webpack": "^4.42.1" ,升级后用的是 "webpack": "^5.72.1" 。 笔者采用的升级webpack的方法是先一键升级所有的依赖包,然后一个一个地去解决运行过程中的报错。 首先,全局安装npm-check-updates:

m0_37937502的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

webpack4 升级至 webpack5 过程总结

本文章记录本次从webpack4框架升级为webpack5之后衍生出来的所有更改 框架主体为 zzy-javascript-frame(地址在文末) 此项目为自行开发构建,包含原 webpack4 版本 和升级后的 webpack5 版本 框架技术栈为 react、react-router、HOOK、react-redux(已安装,未使用)、antd-mobile(UI框架) 插件相关改动 ...

渣渣宇的博客 8892

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

什么是 Webpack? Webpack详解

Webpack 是一个打包模块化 javascript 的工具,在 Webpack 里一切文件皆模块,通过 loader 转换文件,通过 plugin 注入钩子,最后输出由多个模块组合成的文件,Webpack 专注构建 模块化项目,Webpack 可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript 模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript 等),并将其打包为合适的格式以供浏览器使用

鲨鱼不喝水的博客 2616

webpack webpack-cli

ebpack 是一个静态的模块化打包工具,为现代的JavaScript应用程序服务打包 bundler:webpack可以帮助我们进行打包,所以它是一个打包工具静态的static:将代码打包成最终的静态资源(部署到静态服务器)模块化module:webpack默认支持各种模块化开发,ES Module、CommonJS、AMD等现代modern:前端开发的各种问题,催生了webpack的出现webpack 从 4.0 版本开始,在安装时,就必须要安装这两个东西。

qq_30436011的博客 4030

webpack

webpack

无名小小卒的博客 5980

史上最全webpack带你深入了解webpack

史上最全webpack带你深入了解webpack

m0_62371650的博客 2470

【webpack浅析】webpack之深入浅出

本文主要讲解两个方面。分别是 深入了解webpack 和 从0开始配置vue项目。 一:深入了解webpack 1、webpack干什么的 总的来说,webpack是一个资源综合处理中心。这名字起的是不是前无古人,是不是高端大气?!这里我要利用高深的比喻修辞手法和配图(见配图 1.1)大概齐的解释一下webpack。webpack其实可以看做是一个半自动(之所以是半自动,是需要我们自己进行很多的配置)工厂流水线。所有的前端资源,比如 图片,样式,js文件等等,一个接一个排好队伍,整齐划一的进入流...

jmszl1991的博客 4487

webpack 解决unexpected token export_Webpack 教程:加载 JavaScript

Webpack 默认支持 ES2015 的模块定义,但是在进行代码转换的时候,像const这样的语法并不会被转换。这样的话,在一些老旧浏览器中就会产生很多问题。为了能更好的理解 Webpack 的默认输出,我们将 Webpack 的mode参数设置为none, 然后观察一下构建输出:dist/main.js.../***/ ((__unused_webpack_module, ...

weixin_32642109的博客 1951

webpack性能构建优化

webpack4 引入了 mode 模式,可以配置开发和生产模式,就可以使用一些已经默认好的插件帮我们达到想做的效果

不想学习的打工人的博客 1716

webpack常见调试问题

webpack打包常见问题 问题一: peerDependencies WARNING webpack-dev-server@* requires a peer of webpack@^4.0.0 || ^5.0.0 but webpack@3.8.1 was installed peerDependencies WARNING webpack-dev-server@3.10.3 › webpac...

qq_41117240的博客 1424

webpack-cli 在 webpack 打包中的作用

webpack 是一个静态的模块化打包工具,为现代的JavaScript应用程序服务打包 bundler:webpack可以帮助我们进行打包,所以它是一个打包工具静态的static:将代码打包成最终的静态资源(部署到静态服务器)模块化module:webpack默认支持各种模块化开发,ES Module、CommonJS、AMD等现代modern:前端开发的各种问题,催生了webpack的出现webpack 安装 webpack 从 4.0 版本开始,在安装时,就必须要安装这两个东西。webpack 是打包

老司机的后备箱 608
上一篇: CSS笔记
下一篇: 零散知识点
pspdragon
博客等级 码龄10年 4粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值