脚本宝典收集整理的这篇文章主要介绍了webpack 的基本使用,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
前端项目工程化的一个具体解决方案。
主要功能:
好处:
目前Vue
,React
等前端项目,基本上都是基于webpack
进行工程化开发的。
npm install jquery -s or npm i jquery -S
npm install jquery --save # 与上面语义一致
-S
会将包(此处为jquery)的相关信息写入package.json
中的dePEndenciesnpm i webpack@5.42.1 webpack-cli@4.9.0 -D
npm i webpack@5.42.1 webpack-cli@4.9.0 --save-dev # 与上面语义一致
使用-D
会将包(此处为webpack、webpack-cli)的相关信息写入package.json
中的devDependencies
devDependencies 里面的插件只用于开发环境,不用于生产环境;dependencies 是需要发布到生产环境的。
比如我们写一个项目要依赖于 jQuery,没有这个包的依赖运行就会报错,这时候就把这个依赖写入dependencies ;而我们使用的一些构建工具比如 webpack 这些只是在开发中使用的包,上线以后就和他们没关系了,所以将它写入devDependencies。
script 节点下的脚本是可以运行的。
"dev"是脚本的名字,可以自定义,"webpack"是固定写法。
webpack.config.js
会在运行 npm run dev 命令时被读取,webpack根据其中给定的配置,对项目进行打包。
在 webpack 4.x 和 5.x 的版本中,有如下的默认约定:
src/index.js
dist/main.js
可以在webpack.config.js
中修改这一默认约定。
在webpack.config.js
中,通过entry节点指定打包的入口,通过output节点指定打包的出口。
安装插件可以扩展 webpack 的能力,让它用起来更方便。常用的插件有:
安装
在项目路径下运行如下命令:
npm install webpack-dev-server@3.11.2 -D
配置
注意:webpack-dev-server 会启动一个实时打包的 http 服务器
引用js文件时需要注意:如果使用 webpack-dev-server 插件来自动打包,生成的js文件会放在内存中,路径为项目根目录(路径可能为output.filename)。(物理磁盘中无法看到)
安装
在项目路径下运行如下命令:
npm install html-webpack-plugin@5.3.2 -D
配置
一些疑惑
https://juejin.cn/post/6844903853708541959
注意:修改了
webpack.config.js
,必须重启实时打包服务器,否则配置无法生效。
通过devServer
属性,可以对webpack-dev-server
插件进行更多配置。
在实际开发过程中,webpack默认只能打包处理以.js
结尾的文件,其他非.js
结尾的文件需要调用loader
才可以正常打包,否则会报错。
loader
的作用:协助webpack打包处理特定的文件模块。比如:
css-loader
可以打包处理.css
相关的文件less-loader
可以打包处理.less
相关的文件babel-loader
可以打包处理 webpack 无法处理的高级 JS 语法loader 的调用过程
如果在入口js文件中引入了css文件,而没有使用css-loader:
安装和配置 css-loader
当 webpack 发现某个文件处理不了的时候,会查找配置文件 webpack.config.js
,看 module.rules
数组中是否配置了相应的 loader。如果有,webpack 把这个文件转交给 module.rules
中的最后一个 loader处理。
注意:use
数组中指定的 loader 的顺序是固定的,调用顺序:从后往前调用。
所有的 loader 处理完后,将处理结果转交给 webpack,webpack 最终生成了打包好的文件。
运行如下命令,安装 less-loader
npm i less-loader@10.0.1 less@4.1.1 -D
在webpack.config.js
的 module -> rules 数组中,添加调用 loader 的规则:
如果在js文件中导入了url路径相关的文件(如图片),而没有调用对应的loader:
安装和配置 url-loader
运行如下命令
npm i url-loader@4.1.1 file-loader@6.2.0 -D
在webpack.config.js
的 module -> rules 数组中,添加调用 loader 的规则:
用正则表达式匹配了后缀为
.jpg
、.png
、.gif
的文件。
url-loader 的 limIT 选项
limit
用来控制是否对图片进行base64编码,以减少http请求。
低于limit大小的图片将会进行base64编码。
单位是字节(Byte)
webpack 只能打包处理一部分的高级 JS 语法。对于那些 webpack 无法处理的高级 JS 语法,需要借助babel-loader
进行打包处理。
安装和配置 babel-loader
运行如下命令:
npm i babel-loader@8.2.2 @babel/core@7.14.6 @babel/plugin-proposal-decorators@7.14.5 -D
在webpack.config.js
的 module -> rules 数组中,添加调用 loader 的规则:
一定要写 exclude,避免处理 node_modules 目录中的 .js 文件
配置 babel-loader
在项目根目录下,创建配置文件babel.config.js
,内容详情参考 Babel 官网
在package.json
的scripts
节点下,新增 build 命令:
--mode
是一个参数选项,用来指定 webpack 的运行模式。"production"代表生产环境。注意:通过
--mode
指定的参数项会覆盖webpack.config.js
中的mode选项
按照上面的操作打包发布后,所有的文件都放到了dist
目录下,显得比较杂乱。
我们希望能够将图片、js文件放到单独的文件夹中。
更改webpack.config.js
中的output节点
这样webpack打包生成的bundle.js
将会放在 js 目录下
修改webpack.config.js
中的 url-loader 配置项,新增outputPath选项
也可以这样写:
运行命令
npm run build
可以看到dist目录的结构更清晰了
每次用webpack打包发布前,都要手动删除旧的 dist 目录。
为了自动清理掉 dist 目录中的旧文件,我们需要用到插件:clean-webpack-plugin
安装 clean-webpack-plugin
npm install -D clean-webpack-plugin
修改webpack.config.js
CleanWebpackPlugin为什么要加
{}
?(解构赋值)
引例
当你的 js 代码出错时
由于 webpack 打包生成的输出 js 文件和你写的 js 文件并不完全一致,报错的也就不是第18行。
这种情况下,debug 就会变得十分困难。
因此我们需要用到Source Map
。
Source Map
就是一个信息文件,里面储存着位置信息。也就是说,Source Map 文件中存储着压缩混淆后的代码,所对应的转换前的位置。
有了它,出错的时候,开发工具将直接显示原始代码,而不是转换后的代码,能够极大的方便后期的调试。
development
模式下,在webpack.config.js
中添加如下配置:
安全起见,
production
模式下不建议使用此配置。
@H_954_777@
再次运行,可以看到报错信息里显示的是原始代码了:
如果希望能够只看到准确的出错行数,而点击文件时不会看到原始代码,可以进行如下配置:
效果如下:
既方便了调试,也保证了安全性(浏览器端无法看到原始代码)。
development
模式下
production
模式下
更多:https://blog.csdn.net/yangfengjueqi/article/details/86506813
https://webpack.js.org/configuration/resolve/#resolve-alias
@
是 webpack 设置的路径别名,一般代表src
目录。
可以在webpack.config.js
中进行配置:
在 import 时常常使用@
符号。
以上是脚本宝典为你收集整理的webpack 的基本使用全部内容,希望文章能够帮你解决webpack 的基本使用所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。