首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使节点模块依赖于目标项目中安装的另一个模块

如何使节点模块依赖于目标项目中安装的另一个模块
EN

Stack Overflow用户
提问于 2020-03-04 11:03:09
回答 2查看 609关注 0票数 0

我正在编写一个节点模块(isSameAs),它为已经安装在我的项目中的模块(类验证器)添加了一些功能。

当我把它放在我的项目中时,它就起作用了,但当我将它解压缩到一个单独的模块后,它就停止工作了。这个模块依赖于一个class-validator模块,所以我将它安装在一个模块目录中。

我假设,由于我试图修改的模块的两个实例(project/node_modules/class-validatorproject/node_modules/my_module/class-validator),它覆盖了模块目录中的class-validator,这是错误的。

我的模块代码

index.js

代码语言:javascript
复制
import { registerDecorator } from "class-validator";

export function IsSameAs() {
    console.log('value is the same');
}

package.json

代码语言:javascript
复制
"dependencies": {
  "class-validator": "^0.11.0"
}

使用我的模块和class-validator项目

validation.js

代码语言:javascript
复制
import { IsSameAs } from 'class-validator-same-as';

package.json

代码语言:javascript
复制
"class-validator": "^0.11.0",
"class-validator-same-as": "file:../class-validator-isSameAs",

所以很明显,在我的模块中有一个类验证器的第二个实例,是否有一种方法不是在我的模块中安装class-validator,而是使用全局的?

EN

回答 2

Stack Overflow用户

发布于 2020-03-04 11:19:45

我可以想到两种选择:

  • class-validator模块再导出class-validator-same-as模块/函数。在您的主项目中,您将只导入您的class-validator-same-as模块。
  • 使用依赖注入将class-validator模块/函数注入到class-validator-same-as模块中。您只将class-validator导入到您的主项目中,并向您的class-validator-same-as模块提供对class-validator的引用。
票数 0
EN

Stack Overflow用户

发布于 2020-03-04 11:37:51

您可以使用对等依赖,通过这种方式可以显式地告诉您的包需要安装其他包。在安装软件包时,用户甚至会收到一条整洁的消息,而不需要这样做。

您的模块的package.json将类似于

代码语言:javascript
复制
"peerDependencies": {
  "class-validator": "^0.11.0"
}

您可以在对等依赖的这里上阅读更多内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60524596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档