npm - 如何确定是否应将 deps 放入“devDependencies”或“peerDependencies”
问题描述
当您有一个要安装到当前项目或 NPM 包中的依赖项时,很容易确定它是“deps”还是“devDeps”,但是如何确定它是“deps”还是“ peerDeps'?
解决方案
我试着自己回答这个问题。看看是否有人同意或可以纠正我。
如何确定一个 deps 是否应该放入“devDependencies”或“peerDependencies”?
if (your source code /src/ depends on it) {
if (you can't live without it) {
if (you don't want to affect the version that consumer choose to install) {
// This is usually for big or heavy deps, like framework level, for example: react, redux
Put it into 'peerDependencies'
} else {
// This is regular case
Put it into 'dependencies'
}
} else {
// This is a special case, means it is an optional for you in just some of the use cases.
// For example, [Swiper](https://github.com/nolimits4web/swiper), it supports react | vue | angular, but people use vue won't want to see a peerDeps of 'react', right?
Do nothing
}
} else if (only development environment depends on it) {
// This is usually used for compile and test tools.
Put it into 'devDependencies'
}
如果项目有,如何处理/安装本地环境
peerDeps
?
if (you want to make package.json clear enough, without confusion) {
Just Leave 'peerDeps' in 'peerDependencies'
Then use 3rd party tool to install 'peerDeps' locally, without updating package.json.
See https://github.com/helloint/peerdeps-test
} else {
Put 'peerDeps' in 'devDependencies' as well as 'peerDependencies'
This way, npm install will also install these 'peerDeps', just that they are not really 'devDeps'
}
注意:顶级项目不应该有直接的“peerDeps”。'peerDeps' 是下层包到上层包或项目的关系描述。对于project来说,已经是top了,不用说了。
推荐阅读
- javascript - “未定义条带”错误 - 在加载脚本之前调用函数?
- java - 将多个数组保存在字符串中
- php - 如何使用 php 下载包含所有详细信息的音频文件
- sql-server - 在 Amazon RDS 上创建 SQL Server 数据库的 .bak 备份时出现权限错误
- python - 使从 boost-python 类继承的 Python 类可复制
- java - 可以在不与封闭类的实例关联的情况下使用非静态成员类型吗?
- c# - 如何在字符串中查找两列不同表中的公用名称?
- c++ - 如何通过函数指针调用派生方法?
- c# - 类型错误:samAccount IdentityType 必须采用以下形式
- python - 用多行作为一个字符串填充字典