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 如何决定哪个包是无关的?
三个包是async
、debug
和mime
。我正在使用 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
的依赖项,因为 jslint
在 node_modules/jslint/node_modules/exit
下有自己的 exit
版本。让我们摆脱它:
$ rm -rf node_modules/jslint/node_module/exit
$ npm ls
现在 exit
不再是无关紧要的,因为它是实现 jslint
的依赖所必需的。但是如果我查看 ./node_modules
我会看到两个包,exit
和 jslint
,其中只有一个在 package.json
.
中命名
如果我误解了你的问题,请告诉我。
我在我的项目中发现了一个奇怪的情况。
package.json
中未列出但在开发过程中安装的 3 个软件包。
按我的理解,npm list
应该给我看 extraneous error
。但是,没有显示错误。我想知道 npm 如何决定哪个包是无关的?
三个包是async
、debug
和mime
。我正在使用 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
的依赖项,因为 jslint
在 node_modules/jslint/node_modules/exit
下有自己的 exit
版本。让我们摆脱它:
$ rm -rf node_modules/jslint/node_module/exit
$ npm ls
现在 exit
不再是无关紧要的,因为它是实现 jslint
的依赖所必需的。但是如果我查看 ./node_modules
我会看到两个包,exit
和 jslint
,其中只有一个在 package.json
.
如果我误解了你的问题,请告诉我。