我通过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-pwa
的package.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吗
有一些事情是可以确定的,可以先验证一下:
1:删除node_modules后,使用pnpm安转一下,然后看node_modules有没有workbox-build目录就知道有没有安装了
2:删除node_modules后,使用npm安转一下,然后node_modules有没有workbox-build目录就知道有没有安装了,npm安装的时候会把依赖的依赖也打平放在根目录的node_modules下,就算项目没有声明依赖,也可能会安装上。
这里是
pnpm
官方 对peerDependencies
的解释,可以看下,链接