resolve 用来配置 webpack 如何解析模块,可通过优化 resolve 配置来覆盖默认配置项,减少解析范围。
4.1 alias 别名
alias 可以创建 import 或 require 的别名,用来简化模块引入。
webpack.common.js配置
module.exports = {resolve: {alias: {'@': paths.appSrc, // @ 代表 src 路径},}}
// index.tsximport App from '@/App';...
4.2 extensions
extensions 表示需要解析的文件类型列表。
根据项目中的文件类型,定义 extensions,以覆盖 webpack 默认的 extensions,加快解析速度。
由于 webpack 的解析顺序是从左到右,因此要将使用频率高的文件类型放在左侧,如下我将 tsx 放在最左侧。
webpack.common.js 配置方式如下:
module.exports = {resolve: {// extensions 表示需要解析的文件类型列表。extensions: ['.tsx', '.js'], // 因为我的项目只有这两种类型的文件,如果有其他类型,需要添加进去。}}
4.3 modules
modules 表示 webpack 解析模块时需要解析的目录。
指定目录可缩小 webpack 解析范围,加快构建速度。
webpack.common.js 配置方式如下:
module.exports = {// modules 表示 webpack 解析模块时需要解析的目录。modules: ['node_modules',paths.appSrc,]}
4.4 symlinks
如果项目不使用 symlinks(例如 npm link 或者 yarn link),可以设置 resolve.symlinks: false,减少解析工作量。
webpack.common.js 配置方式如下:
module.exports = {resolve: {symlinks: false,},}
优化 resolve 配置后,构建时间将减少 1.5%,效果如下:
