npm库中使用的rxjs应该作为依赖项(dependency)、同行依赖(peerdependency)还是两者都包含?

5

我已经阅读了很多有关dependencies和peerDependencies的文章和帖子,但在我的非常简单的情况下仍然不确定要做什么...

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

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

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

然而,在任何使用应用程序中,我认为我们都希望使用精确的rxjs版本。阅读这篇文章后,似乎如果在我的项目中将'rxjs'作为依赖项(例如,假设为v6),我也希望使用'rxjs' v6的消费项目(而不是v7)。但是,如果我只有rxjs作为依赖项,npm会不会只在我的库的node_modules下安装另一个“私有”版本的rxjs

但是,如果我只把rxjs包含在peerDependencies中,我就无法构建,我会得到...

error TS2307: Cannot find module 'rxjs'.

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

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

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

1个回答

3

你应该将这个依赖项放在 devDependenciespeerDependencies 中。

devDependencies 会在开发过程中提供它,但不会在生产构建中使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接