npm init -y
npm i webpack webpack-cli --save-dev
默认为 src/index.js、dist/main.js
npm i html-webpack-plugin --save-dev
npm i css-loader style-loader --save-dev
npm i bootstrap
mini-css-extract-plugin 不能和 style-loader 一起使用。
css 文件可以被浏览器缓存,减少 js 文件体积。
css-minimizer-webpack-plugin
加载器 less-loader,less 一起安装,npm i less less-loader --save-dev
资源模块:webpack5 内置资源模块(字体,图片等打包),无需额外 loader。
npm i webpack-dev-server --save-dev 设置模式为开发模式mode: development,命令行设置的优先级高于配置文件中的,推荐用命令行中的。
借助cross-env(跨平台通用)包命令,设置参数区分环境
npm i cross-env --save-dev
"build": "cross-env NODE_ENV=production webpack --mode=production",
"dev": "cross-env NODE_ENV=development webpack serve --open --mode=development"
vscode 的 live server 插件,打包生成的文件中右键预览。预览的是生产的页面。
new webpack.DefinePlugin({
"process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV),
}),
代码被压缩和混淆,无法正确定位源代码位置(行数和列数)
devtool: "inline-source-map"
inline-source-map 选项:把源码的位置信息一起打包在 js 文件内,可以准确追踪 error 和 warning 在原始代码的位置。
注意:source-map 仅适用于开发环境,不要在生产环境使用(防止被轻易查看源码的位置)。
可以在前端使用,使用绝对路径。
import index from "@/index.js"
CDN:内容分发网络,指的是一组分布在各个地区的服务器。
作用:把静态资源文件/第三方库放在 CDN 网络中各个服务器中,供用户就近请求获取。
好处:减轻自己服务器请求压力,就近请求无力延迟低,配套缓存策略。
生产环境一般会购买 cdn
多页面:多个 html 页面,切换页面实现不同业务逻辑展示
splitChunks