本地安装自研NPM包后Vue项目报错:无法找到eslint相关依赖
问题根因
直接通过npm i <本地包路径>安装自研依赖时,npm会将整个包目录软链到项目的node_modules中。Vue项目的eslint-loader默认会校验所有引入的JS文件,同时会读取依赖包自带的.eslintrc.json配置,但是你的Vue项目中没有安装该包依赖的eslint插件,因此触发找不到模块的报错。而用npm pack安装时只会引入打包后的产物,不会带eslint配置文件,因此不会触发该问题。
解决方案
1 快速修复当前eslint报错
你可以任选以下任意一种方法解决报错:
- 方法一:忽略对自研依赖包的eslint校验
在Vue项目根目录的.eslintignore文件中添加一行配置即可:
node_modules/<你的自研包名称>
- 方法二:强制eslint从当前项目目录查找插件
在Vue项目根目录的.eslintrc.js(或对应eslint配置文件)中添加如下配置,让eslint忽略依赖包的插件查找路径:
module.exports = { // 保留你原有的其他配置不变 resolvePluginsRelativeTo: __dirname }
2 更高效的本地联调工作流
推荐使用npm link方案实现修改自研包代码后实时生效,无需反复打包安装:
- 进入自研npm包的根目录,执行
npm link,该命令会将当前包在全局npm环境中创建软链 - 进入Vue项目的根目录,执行
npm link <你的自研包名称>,将全局软链的包映射到当前项目的node_modules中 - 给自研包开启监听编译模式:如果你用rollup/tsc/vite等工具打包,执行对应的watch命令(例如
rollup -c --watch、tsc --watch),修改包源码后会自动编译生成最新产物 - 若你的Vue项目是基于Vite构建,需要在
vite.config.js中添加配置,跳过对该包的预构建,避免热重载失效:
export default defineConfig({ // 保留原有配置不变 optimizeDeps: { exclude: ['<你的自研包名称>'] } })
配置完成后,修改自研包源码会自动触发编译,Vue项目的热重载会自动检测到依赖变化并更新页面,开发效率和直接在项目里写代码一致。
内容的提问来源于stack exchange,提问作者Stiv
相关产品推荐
相关产品推荐

