我有以下问题。当前,我想构建一个NPM模块,该模块具有以下预期行为:
一旦我安装了它,它的所有依赖项在项目中都可以正常工作,只需导入它们即可。
首先,我的意思是:
我将“ 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"
}
}
答案 0 :(得分:1)
两个软件包都需要primereact
依赖性,当您在顶层软件包上进行install
时,它会上移primereact
依赖性,假设有一个版本可以同时满足两个依赖性
对于此包{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中,建议您专门将这些依赖项声明为应用程序的一部分。