关于package.json下 peerDependencies 的用途
主要列出需要用户自己安装的依赖的列表,如vite包:
"peerDependencies": {
"vue": "^3.3.0",
"sass": "*"
},
"devDependencies": {
"vue": "^3.3.4",
"sass": "^1.77.0"
}
但是一般,会在devDependencies下发现有依赖,这个是用来包自身测试用的,不是给用户用的
关系图:
┌────────────────────────────────────┐
│ 使用者项目(如 Nuxt 项目) │
│ │
│ ┌────────────────────────────┐ │
│ │ my-ui-lib │◄───┤ ← 安装你的库
│ │ │ │
│ │ dependencies: │ │ ✔ 会被打包进生产代码中
│ │ axios │ │
│ │ │ │
│ │ peerDependencies: │ │ ⚠️ 用户必须自己安装
│ │ vue │ │ 否则运行时报错
│ │ sass │ │
│ │ │ │
│ │ devDependencies: │ │ 🛠️ 仅开发和测试用
│ │ vite, vitest, vue, sass │ │
│ │ │ │
│ │ optionalDependencies: │ │ ❓ 可以用,但不是必须
│ │ tailwindcss │ │
│ └────────────────────────────┘ │
└────────────────────────────────────┘
可以通过如下命令查看npm安装的包的情况:
如查看sass包和sass-embedded包的安装
$ npm ls sass
$ npm ls sass-embedded
如上,如果用户没有自己安装,那么即使执行了上面的命令,也没有输出
