reactjs - 如何使可选的对等依赖项真正可选

标签 reactjs typescript npm es6-modules peer-dependencies

我有一个 NPM 包,它提供两种东西:React Hook 形式的核心功能和使用这些核心功能的 UI 组件。

我最初的想法是制作两个包,一个用于核心内容,一个用于组件。因此,如果您不想使用开箱即用的组件,您仍然可以使用库的核心功能。在处理库后,我发现制作两个包有点过分,因为核心功能基本上是 2 个 Hook,代码不到 200 行。

所以我采用了将 UI 组件依赖项添加为对等依赖项的方法,并期望当我将它们标记为可选时,如果不需要 UI 部件则不需要安装它们。将它们标记为可选我的意思是:

"peerDependenciesMeta": {
    "@material-ui/core": {
      "optional": true
    },
}

现在的问题是,即使我没有将 UI 部分从我的库导入到我设置的测试项目中,应用程序也会中断,因为它正在尝试寻找可选的依赖项。

我的问题:

  • 这是预期的行为吗?
  • 如果应用程序在我的库所依赖的模块不存在时中断,那么这些对等依赖项有什么可选的?
  • 除了为组件制作一个单独的包外,我没有其他选择吗?

希望有人能为我照亮黑暗。

最佳答案

似乎唯一真正的解决方案是真正将核心功能从 UI 部分中分离出来。否则,总会安装用户可能不想要的依赖项。

关于reactjs - 如何使可选的对等依赖项真正可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68452138/

相关文章:

javascript - aws - CloudFront createInvalidation() 方法参数在使用 promises 时出错

javascript - 从 typescript 中的 <input> 元素获取值

Angular 2/4 : Loading sass variables per module

javascript - 如何将消息发送到 Electron 中的不同窗口?

reactjs - 如何将 Reactjs 组件发布到 npm

npm - verdaccio 与私有(private) token

javascript - 自定义 react 下拉菜单无法正确打开关闭

javascript - 添加授权以 react 路由器

javascript - React NavBar 组件阻止渲染

reactjs - 在 React 中使用 ApolloClient 订阅 AppSync