【问题标题】:Peer vs Dependency for npm packagenpm 包的对等与依赖关系
【发布时间】:2019-09-02 09:56:03
【问题描述】:

我正在创建一个 react-native 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"
    }

它看起来正确吗?

【问题讨论】:

  • 如果根据我的回答,My current package.json for library 应该这样做:1. 不要在 "dependencies" 中列出 "react",并且 2. 制作 "devDependencies": { "react": "^16.9.0" },然后 3. "peerDependencies": { "react": "^16.9.0" } 或 @ 987654329@ 或 "peerDependencies": { "react": "*" } 或任何其他合理的版本,取决于您的实现。
  • 对于应用程序,它可能是正确的,它仍然取决于你的实现;如果应用需要"react": "^16.9.0",,那么你是对的。

标签: reactjs npm


【解决方案1】:

如果您的模块类似于 ui 库并要安装到另一个 react 应用程序中,它应该将 react 和 react-native 列为 devDependencies 和 peerDependencies。宿主应用程序中不应有 2 个版本的 react(和 react-native),因此为了实现这一点,请使用这 2 个依赖项,它们不会在宿主应用程序中安装任何东西。

devDependencies:描述你在开发时依赖的包;你们都需要 react 和 react-native 所以把它们放在这里;使用任何你想要的版本。

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”:仅本地开发需要的包 和测试。

【讨论】:

  • “宿主应用程序中不应该有 2 个版本的 react(和 react-native),所以放入这 2 个依赖项中,它不会在宿主应用程序中安装任何东西。”。什么意思?
  • @mAhMoUdDaFeR 我编辑了我的话,他们的英文不正确,抱歉。
  • @MarsonMao 更新了我的问题,通过你的回答
猜你喜欢
  • 2017-09-25
  • 1970-01-01
  • 2016-07-13
  • 2018-04-22
  • 1970-01-01
  • 2019-05-22
  • 2020-01-21
  • 1970-01-01
  • 2020-07-05
相关资源
最近更新 更多