关于 Webpack4 基础配置介绍
Webpack 配置
webpack 简介
第一步:
初始化 node:npm init -y 生成默认 packeage.json 文件
安装 webpack 打包:npm i wepack webpack-cli -D
检查版本:npx webpack -v // 在当前项目中查找
当前项目启动: npx webpack
注意事项
当前项目启动使用 npx 启动,npm 启动的是全局 webpack
默认配置
自定义配置 webpack
在根目录新建文件:webpack.config.js
Plugins 插件
HtmlWebpackPlugin
打包结束自动生成一个 html 文件,并把生成的 js 模块引入
clean-webpack-plugin
自动删除上一个 dist 目录
postcss-loader autoprefixer
自动添加浏览器兼容
mini-css-extract-plugin
将 css 合并成一个单独的文件引入
官方文档:https://webpack.docschina.org/plugins/mini-css-extract-plugin/
将"style-loader"改为:MiniCssExtractPlugin.loader
optimize-css-assets-webpack-plugin
压缩 css
开发环境性能优化
sourceMap
官方文档:https://webpack.docschina.org/configuration/devtool/
快速找到发生错误的位置
默认 development 模式 devtool: 'source-map',
默认 production 模式 devtool: 'none',
建议设置:devtool: 'eval-cheap-module-source-map'
Webpack 热更新
DevServer 开发服务器
基于 webpack5
官方地址:https://webpack.docschina.org/guides/development/
自动化执行 只会在内存中编译打包,不会有任何输出
仅用于开发环境,请不要在生产环境中使用它们!
先将 mode 设置为 'development',并将 title 设置为 'Development'
package.json 配置
webpack.config.js 配置
启动指令: npm start
HMR
模块热更新
更新修改的某个文件
默认 css 开启了 HMR
html 不需要开启,默认 js 未开启 HMR
入口文件没有 HMR 功能,只能给入口文件的依赖开启 HMR 功能
parint.js
index 中使用
Loader
js 语法检查
使用 eslint-loader
配置
js 语法兼容
使用 babel-loader 处理
配置
生产环境性能优化
优化打包构建速度
oneOf
默认会将所有 loader 都过一遍,为了性能更好,使用 oneOf
注意:不能有两个配置处理同一种类型文件
oneOf 会匹配文件处理,oneOf 中的 loader 只会匹配一个
babel 缓存
开启 babel 缓存,第二次构建时会读取之前的缓存
用来将一些较大的 js 文件缓存
options: { cacheDirectory: true, }
hash/chunkhash/contenthash
选择 contenthash,hash 值随文件改变而改变
优化代码运行的性能
tree shaking
去除无用 js 代码
使用条件:
必须使用 ES6 模块化
开启 production 环境
Code split
文件打包的三种方式:
入口文件打包 单入口/多入口
代码分隔
动态导入语法/结合第二种方法 split
1.使用 split 打包,可以将 nde_modules 中代码单独打包一个 chunk 最终输出
2.自动分析多入口 chunk 中,有没有公共的文件,如果有,会单独打包一个 chunk
动态导入
通过 js 代码,让某个文件被单独打包成一个 chunk
import 动态导入语法:能将某个文件单独打包
通过 webpack 注释给打包文件命名
懒加载
利用代码分隔,将代码分隔放在一个异步的触发事件中 从而实现懒加载
预加载: webpackPrefetch: true
使用预加载,让网页在空闲状态下加载文件,兼容性较差(慎用)
区别:
正常加载是并行加载(同一时间加载多个文件)
懒加载是在事件触发时, 在使用时加载
预加载是 等其它文件加载完毕之后,在浏览器空闲时再加载
PWA
渐进式网络开发应用程序(离线可访问技术)
index.js 中配置
package.json 中配置
必须运行在服务器中才能看到结果
版权声明: 本文为 InfoQ 作者【Chalk】的原创文章。
原文链接:【http://xie.infoq.cn/article/cd087fb04fdbe523c265d7198】。文章转载请联系作者。
评论