Skip to content

(二十一)缩小模块搜索范围

阿峰 edited this page May 30, 2023 · 1 revision

步骤二十一

优化构建速度-node里面模块有三种

  • node核心模块
  • node_modules模块
  • 自定义文件模块

使用require和import引入模块时

  1. 如果有准确的相对或者绝对路径,就会去按路径查询
  2. 如果引入的模块没有路径,会优先查询node核心模块
  3. 如果没有找到会去当前目录下node_modules中寻找
  4. 如果没有找到会查从父级文件夹查找node_modules, 一直查到系统node全局模块。

注意:这样会有两个问题,

  • 一个是当前项目没有安装某个依赖,但是上一级目录下node_modules或者全局模块有安装,就也会引入成功,但是部署到服务器时可能就会找不到造成报错,
  • 另一个问题就是一级一级查询比较消耗时间。可以告诉webpack搜索目录范围,来规避这两个问题。
  1. 修改webpack.base.js
// webpack.base.js
const path = require('path')
module.exports = {
  // ...
  resolve: {
     // ...
     // 如果用的是pnpm 就暂时不要配置这个,会有幽灵依赖的问题,访问不到很多模块。
     modules: [path.resolve(__dirname, '../node_modules')], // 查找第三方模块只在本项目的node_modules中查找
  },
}
Clone this wiki locally