npm 包未在项目的 package.json 中列出,但没有外来错误

npm package is not listed in project's package.json but no extraneous error

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

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

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

I am wondering how npm decides which package is extraneous or not?

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

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

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

其次,只有当包不是 package.json 或其任何依赖项.[=27 中命名的(依赖项、devDependency、optionalDependency)时,它才是无关紧要的=]

例如,我可以创建这个场景:

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

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

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

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

中命名

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