gpt4 book ai didi

node.js - npm:如何管理依赖项?

转载 作者:太空宇宙 更新时间:2023-11-03 23:45:57 24 4
gpt4 key购买 nike

我安装了express、mongodb和mongoose。这是我的 npm ls 的结果:

/home/merc/Bookings
├─┬ connect-mongo@0.1.9
│ └─┬ mongodb@0.9.9-8
│ └── bson@0.0.4
├─┬ express@3.0.0rc2
│ ├── commander@0.6.1
│ ├─┬ connect@2.4.2
│ │ ├── bytes@0.1.0
│ │ ├── formidable@1.0.11
│ │ ├── pause@0.0.1
│ │ └── qs@0.4.2
│ ├── cookie@0.0.4
│ ├── crc@0.2.0
│ ├── debug@0.7.0
│ ├── fresh@0.1.0
│ ├── methods@0.0.1
│ ├── mkdirp@0.3.3
│ ├── range-parser@0.0.4
│ └─┬ send@0.0.3
│ └── mime@1.2.6
├─┬ jade@0.27.2
│ ├── commander@0.6.1
│ └── mkdirp@0.3.0
├─┬ mongodb@1.1.2
│ └── bson@0.1.1
└─┬ mongoose@3.0.0
├── hooks@0.2.1
├─┬ mongodb@1.1.2
│ └── bson@0.1.1
└── ms@0.1.0

您可以清楚地看到,由于某种原因,Jade 位于根目录上(我假设这是在运行“express”时发生的。但话又说回来,“mongodb”有不同的版本(0.9.9 和 1.1.2),bson 也是如此(0.1.1 和令人担忧的 0.0.4)。

因此我的问题是:npm 如何管理依赖项?每个软件包是否都可以简单地安装他们喜欢的任何版本,无论他们选择哪个版本?

我想问题是:这种重复是“正常的”,可以说是“有意设计的”吗?

梅克。

最佳答案

简短的回答是,是的,这是设计使然。当您需要来自node_modules目录的模块时,它会使用顶级目录——例如,您在package.json中指定的目录。

其他包有自己的 package.json 文件,并且可以自由使用它们想要的任何版本,当它们在自己的代码中require时,它们将使用自己的 node_modules 文件夹。

理想情况下,您使用的模块具有测试等,以确保它们指定的依赖项的版本(甚至指定一系列版本,例如 0.9.x)运行良好,并且看到旧版本的子依赖项并不一定意味着危险,尽管这些模块的新版本当然可能会修复错误等。可能值得在 GitHub 上找到您关心的模块,下载存储库,自行更新 package.json 和依赖项,然后运行测试以查看新版本是否有效。如果是这样,也许作者会愿意接受pull request随着您的更新。

关于node.js - npm:如何管理依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11896240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com