这是我的package.json依赖项数组:
{
"cookie-parser": "~1.0.1",
"body-parser": "~1.0.0",
"express": "~3.5.0",
"socket.io":"1.0",
"mongodb":"2.2.21",
"request":"2.79.0",
"q":"1.4.1",
"bcryptjs":"2.4.0",
"jsonwebtoken":"7.2.1",
"lodash":"4.17.4",
"express-jwt": "5.1.0"
}
然后当我执行NPM安装时,这是输出: http://imgur.com/fyEHUcI
为什么我会得到所有这些?在一台PC上,我只得到了我要求的依赖项,但在我的笔记本电脑上,我得到了所有这些。我很迷茫。我也有输出,但粘贴在这里看起来很难看。
答案 0 :(得分:3)
您正在安装的软件包具有依赖项 - 这意味着在安装它们时,您还要安装它们的依赖项。
答案 1 :(得分:1)
我继续使用您的依赖项创建了一个模拟package.json
并执行了npm install
。
实际上,实际显示的包是列出的包,但是npm ls
将显示安装那些依赖项的所有依赖项,如 Pineda 在评论你的问题。
您可以使用npm ls
查看依赖关系结构。完整文档可在此处找到:https://docs.npmjs.com/cli/ls
答案 2 :(得分:1)
为了消除有关包裹的任何奇怪之处(我也会遇到这种情况),最好再次删除node_modules
文件夹和npm i
。之后,package.json
中的依赖项(dev-dependencies和normal-one)的组合应该与命令的输出匹配:npm ls --depth="0"
。
现在,在您的PC和笔记本电脑上,npm ls --depth="0"
将匹配package.json
中所有依赖项的组合列表。两者都不能错配,否则这意味着npm变得自我意识并且变得流氓。
现在,SO的读者对您的问题进行了投票,假设您不理解依赖项可能具有依赖关系,而且文件夹来自何处。
我希望情况并非如此,并且你不会因为SO中发生的任何消极情绪而气馁。
另一种可能的情况可能会解释您的情况。
如果您在安装依赖项时忘记添加--save
,则依赖项仅保存到node_modules
文件夹,但未添加到您的package.json
。因此,您可能无意中安装了更多您使用的东西。
当您删除node_modules
文件夹并再次安装时,将清除所有依赖项,并且仅安装仅包含在package.json中的内容。这就是我建议首先删除node_modules
文件夹的原因。需要注意的是,npm-publishing自动化库(如我首选的np)往往会在发布npm包之前擦除并重新安装依赖项,原因正是如此。 node_modules
中可能存在“垃圾”并擦除/重新安装帮助。
我建议在--save
上提及this精彩答案。
关于以前的答案,Jonathan提到了npm ls
,但我发现除了琐碎的图书馆之外的任何其他东西都不实用 - 滚动太多了。最好使用npm ls --depth="0"
来检查依赖项的最高级别。