【问题标题】:Should rxjs used in an npm lib be a dependency, peerdependency, or both?在 npm lib 中使用的 rxjs 应该是依赖关系、对等依赖关系还是两者兼而有之?
【发布时间】:2021-09-05 14:56:02
【问题描述】:

我已经阅读了很多关于依赖项与 peerDependencies 的帖子和文章,但在我非常简单的情况下仍然不能 100% 确定......

我有一个使用rxjs 的库(发布到私有npm 存储库),例如它有一些返回类型为Observable 的函数(我在其他Angular 项目中使用这些函数)。所以,它有一个源文件,它具有以下导入...

import { Observable, Subscriber, TimeoutError } from 'rxjs';

所以,我通常认为这是一个dependency,我需要rxjs 才能构建它。

但是,对于任何消费应用程序,我认为我们需要确切的 rxjs 版本。阅读this article,似乎如果我的项目中有“rxjs”作为依赖项(例如,可以说v6),我还希望消费项目也使用“rxjs”v6(而不是v7)。但是如果我只有 rxjs 作为 dependency,npm 不会在我的库 node_modules 下安装另一个“私有”版本的 rxjs 吗?

但如果我在 peerDependencies 下包含 rxjs,我无法构建,我得到...

error TS2307: Cannot find module 'rxjs'.

   1 import { Observable, Subscriber, TimeoutError } from 'rxjs';
                                                           ~~~~~

我在这里使用 rxjs 作为一个简单的具体示例,但其他库也可能发生这种情况。

这是否意味着我需要它作为依赖和 peerDependency?我没有看到其他地方提到这一点?

【问题讨论】:

    标签: javascript angular npm rxjs


    【解决方案1】:

    你应该把依赖放在devDependenciespeerDependencies中。

    devDependencies 将在开发期间提供它,但不会在生产版本中提供。

    【讨论】:

    • 啊,是的,这是有道理的!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-07-13
    • 2011-05-12
    • 2017-09-25
    • 1970-01-01
    • 2015-12-28
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多