npm包未列在项目的package.json中,但没有无关的错误

时间:2015-01-28 12:31:08

标签: node.js npm

我在项目中看到了一个奇怪的情况。 package.json中未列出3个软件包,但在开发过程中已安装。

据我了解,npm list应该向我显示extraneous error。但是,没有显示错误。我想知道npm如何决定哪个包是无关的?

这三个包是asyncdebugmime。我正在使用npm 1.4.28

2 个答案:

答案 0 :(得分:2)

首先,您应该更新npm,因为1.4.28已经很久了;最新的是2.4.1

其次,如果包不是package.json 中指定的(dependency,devDependency,optionalDependency)或其任何依赖,那么它只是无关紧要的。

例如,我可以创建这种情况:

$ mkdir test && cd test $ echo {} > package.json $ npm install --save jslint $ npm install exit $ npm ls

现在exit是无关紧要的,即使它是jslint的依赖关系,因为jslintexit下有自己的node_modules/jslint/node_modules/exit版本。让我们摆脱它:

$ rm -rf node_modules/jslint/node_module/exit $ npm ls

现在exit不再是无关紧要的,因为需要履行jslint的依赖关系。但如果我查看./node_modules,我会看到两个包exitjslint,其中只有一个在package.json中命名。

如果我误解了你的问题,请告诉我。

答案 1 :(得分:0)

  

我想知道npm如何决定哪个包是无关的?

不在package.json中的已安装软件包将触发npm extraneous error

尝试刷新本地node_modules目录。 使用--save / --save-dev密钥安装所需的软件包。