-
Notifications
You must be signed in to change notification settings - Fork 14
(二十一)缩小模块搜索范围
阿峰 edited this page May 30, 2023
·
1 revision
- node核心模块
- node_modules模块
- 自定义文件模块
使用require和import引入模块时
- 如果有准确的相对或者绝对路径,就会去按路径查询
- 如果引入的模块没有路径,会优先查询node核心模块
- 如果没有找到会去当前目录下node_modules中寻找
- 如果没有找到会查从父级文件夹查找node_modules, 一直查到系统node全局模块。
注意:这样会有两个问题,
- 一个是当前项目没有安装某个依赖,但是上一级目录下node_modules或者全局模块有安装,就也会引入成功,但是部署到服务器时可能就会找不到造成报错,
- 另一个问题就是一级一级查询比较消耗时间。可以告诉webpack搜索目录范围,来规避这两个问题。
- 修改webpack.base.js
// webpack.base.js
const path = require('path')
module.exports = {
// ...
resolve: {
// ...
// 如果用的是pnpm 就暂时不要配置这个,会有幽灵依赖的问题,访问不到很多模块。
modules: [path.resolve(__dirname, '../node_modules')], // 查找第三方模块只在本项目的node_modules中查找
},
}