在package.json中,什么是phantomChildren?

时间:2019-07-01 14:01:32

标签: npm package yarnpkg package.json

当我安装模块时,在package.json文件中将出现phantomChildren列表。什么是phantomChildren?

1 个答案:

答案 0 :(得分:1)

我没有找到npm软件包phantomChildren的官方文档。但是遇到了其他一些解释:https://rushjs.io/pages/advanced/phantom_deps/。它与rast有关,但是很好地说明了npm依赖项的行为。

例如,库A可以从库BC导入定义,但是BC都可以从D导入,这在这四个软件包之间创建了“钻石依赖”。

  

当项目使用以下软件包时,会出现“幻影依赖项” :   未在其package.json文件中定义。

一些实时示例:

my-library/package.json

{
  "name": "my-library",
  "version": "1.0.0",
  "main": "lib/index.js",
  "dependencies": {
    "minimatch": "^3.0.4"
  },
  "devDependencies": {
    "rimraf": "^2.6.2"
  }
}

my-library/lib/index.js

var minimatch = require("minimatch")
var expand = require("brace-expansion");  // ???
var glob = require("glob")  // ???
  

请稍等-这些库中的两个未声明为依赖项   在package.json文件中。这是怎么工作的?原来   大括号扩展是minimatch的依赖项,而glob是   rimraf的依赖。在安装过程中,NPM将其扁平化   文件夹位于my-library / node_modules下。 NodeJS require()   函数会在此处找到它们,因为它会探测没有   完全考虑package.json文件。

总结:如果程序包使用其自身依赖项的依赖项,则可以将其视为phantomChildren。程序包没有直接的依赖关系,而是在其他地方使用它。