pnpm的peerDependencies依赖问题

我通过pnpm使用vite-plugin-pwa在给一个项目安装pwa时遇到了问题,打包时报错:

Rollup failed to resolve import "workbox-window" from "..\..\..\..\@vite-plugin-pwa\virtual:pwa-register".This is most likely unintended because it can break your application at runtime.
If you do want to externalize this module explicitly add it to
`build.rollupOptions.external`

查找了workbox-window后了解了是一个包,再查看了vite-plugin-pwapackage.json后发现它有个peerDependencies选项并这样描述:

"peerDependencies": {
    "vite": "^2.0.0",
    "workbox-build": "^6.4.0",
    "workbox-window": "^6.4.0"
  },

我直接按照这个依赖安装了workbox-build workbox-window后项目就没有打包和运行时的错误了

我想知道这个peerDependencies到底是什么意思,我之前使用npm安装pwa时没有遇到这个问题,是因为pnpm在安装pwa插件时没有一起安装workbox吗

阅读 10.8k
1 个回答

有一些事情是可以确定的,可以先验证一下:
1:删除node_modules后,使用pnpm安转一下,然后看node_modules有没有workbox-build目录就知道有没有安装了
2:删除node_modules后,使用npm安转一下,然后node_modules有没有workbox-build目录就知道有没有安装了,npm安装的时候会把依赖的依赖也打平放在根目录的node_modules下,就算项目没有声明依赖,也可能会安装上。

这里是 pnpm 官方 对 peerDependencies 的解释,可以看下,链接

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏