如何从其他npm依赖项导入模块依赖项?

时间:2019-08-05 15:23:13

标签: javascript npm module dependencies

我有以下问题。当前,我想构建一个NPM模块,该模块具有以下预期行为:

一旦我安装了它,它的所有依赖项在项目中都可以正常工作,只需导入它们即可。

首先,我的意思是:

enter image description here

我将“ my-module”项目作为该特定版本所需的依赖项模块。

另一方面,我有一个导入项目,如我们所见。

在我的项目中,我想编写例如下面的代码并最终运行它:

import {Calendar} from 'primereact/calendar';

我该如何处理这个麻烦?

谢谢!

编辑:我项目的package.json是这个

{
  "name": "my-project",
  "version": "0.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "next src",
    "build": "next build src",
    "start": "next start src"
  },
  "license": "ISC",
  "dependencies": {
    "next": "^9.0.3",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "@ascope/my-module": "file://../my-module"
  }
}

也是我模块的package.json:

{
  "name": "my-module",
  "version": "0.0.1",
  "main": "index.js",
  "scripts": {
    "test": "exit 1"
  },
  "license": "ISC",
  "bundledDependencies": [
    "primereact",
    "rxjs"
  ],
  "dependencies": {
    "primereact": "^3.1.8",
    "rxjs": "^6.5.2"
  },
  "peerDependencies": {
    "primereact": "^3.1.8",
    "rxjs": "^6.5.2"
  }
}

2 个答案:

答案 0 :(得分:1)

两个软件包都需要primereact依赖性,当您在顶层软件包上进行install时,它会上移primereact依赖性,假设有一个版本可以同时满足两个依赖性

看看NPM install algorithm

  

对于此包{dep}结构:A {B,C},B {C},C {D},此算法   产生:

A
+-- B
+-- C
+-- D
  

也就是说,A对B的依赖关系得到满足   已经导致将C安装在更高级别。 D还在   安装在顶层,因为没有任何冲突。


  

对于A {B,C},B {C,D @ 1},C {D @ 2},此算法产生:

A
+-- B
+-- C
   `-- D@2
+-- D@1
  

由于B的D @ 1将安装在顶层,因此C现在必须   自行安装D @ 2。该算法是确定性的,但是   如果请求两个依赖关系,则可能会生成不同的树   安装顺序不同。

您还可以运行npm dedupe

答案 1 :(得分:0)

在node.js中,建议您专门将这些依赖项声明为应用程序的一部分。

Require dependency of another dependency in node modules