我在项目中看到了一个奇怪的情况。
package.json
中未列出3个软件包,但在开发过程中已安装。
据我了解,npm list
应该向我显示extraneous error
。但是,没有显示错误。我想知道npm如何决定哪个包是无关的?
这三个包是async
,debug
和mime
。我正在使用npm 1.4.28
答案 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
的依赖关系,因为jslint
在exit
下有自己的node_modules/jslint/node_modules/exit
版本。让我们摆脱它:
$ rm -rf node_modules/jslint/node_module/exit
$ npm ls
现在exit
不再是无关紧要的,因为需要履行jslint
的依赖关系。但如果我查看./node_modules
,我会看到两个包exit
和jslint
,其中只有一个在package.json
中命名。
如果我误解了你的问题,请告诉我。
答案 1 :(得分:0)
我想知道npm如何决定哪个包是无关的?
不在package.json中的已安装软件包将触发npm extraneous error
。
尝试刷新本地node_modules
目录。
使用--save
/ --save-dev
密钥安装所需的软件包。