npm 库中使用的 rxjs 应该是依赖项、对等依赖项,还是两者兼而有之?

pet*_*erc 5 javascript npm rxjs angular

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

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

import { Observable, Subscriber, TimeoutError } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)

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

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

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

error TS2307: Cannot find module 'rxjs'.

   1 import { Observable, Subscriber, TimeoutError } from 'rxjs';
                                                           ~~~~~
Run Code Online (Sandbox Code Playgroud)

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

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

Gre*_*eek 3

您应该将依赖项放入devDependencies和中peerDependencies

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