我正在创建一个本机的npm模块。
npm模块使用React和React-Native软件包,即像这样
import React, { Component} from 'react'
import { View } from 'react-native'
class something extends Component {
render () {
return (
<View>
{/* Code */}
</View>
)
现在,在这里我应该添加React和React-native作为依赖项或peerDependencies,为什么?
更新:我当前用于库的package.json(npm模块)
"dependencies": {
"prop-types": "^15.7.2",
"react": "^16.9.0",
"react-native": "^0.60.5",
"react-native-device-info": "^2.3.2"
}
对于该应用,让它类似于
"dependencies": {
"prop-types": "^15.7.2",
"react": "^16.9.0",
"react-native": "^0.60.5"
}
看起来正确吗?
答案 0 :(得分:1)
如果您的模块类似于ui库,并且要安装到另一个React应用中,则它应该将react和react-native列为 devDependencies和peerDependencies 。主机应用程序中不应有2个版本的react(和react-native)版本,因此要实现这一点,请使用这2个依赖项,它们不会在主机应用程序中安装任何东西。
devDependencies :描述开发时依赖的软件包;你们都需要反应和反应本机,所以把它们放在这里;使用所需的任何版本。
peerDependencies :描述您需要/建议您的主机应用使用的软件包,这些版本应至少与您的使用相匹配,因此可以是最低版本或不受限制;
例如,检查此package.json,在开发时,此包将“ react”:“ ^ 16.8.5”用作“ devDependencies”;并且在安装时,它实际上不使用任何特定于React版本的特定api,因此它使用“ react”:“ *”作为“ peerDependencies”。
参考文献:
https://nodejs.org/es/blog/npm/peer-dependencies/
我们需要的是一种表达这些“依赖关系”的方法 插件及其主机包。可以这样说:“我只有在 插入了我的主机软件包的1.2.x版本,因此,如果您安装了我, 确保它与兼容主机并排。”我们称之为 关系对等依赖性。
https://docs.npmjs.com/specifying-dependencies-and-devdependencies-in-a-package-json-file
“ devDependencies”:仅本地开发所需的软件包 和测试。