lan*_*ane 6 package npm package.json yarnpkg
当我安装一个模块时,文件中会phantomChildren出现一个列表package.json。什么是phantomChildren?
我没有找到npmpackage 的官方文档phantomChildren。但是遇到了一些其他的解释:https : //rushjs.io/pages/advanced/phantom_deps/。它是关于rast,但npm很好地解释了依赖关系的行为。
例如 libraryA可能从 librariesB和导入定义C,但是然后B和C都可以从 导入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") // ???
Run Code Online (Sandbox Code Playgroud)
等一下——其中两个库没有在 package.json 文件中声明为依赖项。这到底是怎么工作的!?事实证明,大括号扩展是 minimatch 的一个依赖项,而 glob 是 rimraf 的一个依赖项。在安装过程中,NPM 将它们的文件夹扁平化到 my-library/node_modules 下。NodeJS require() 函数会在那里找到它们,因为它根本不考虑 package.json 文件而探测文件夹。
总结一下:如果包使用了自己依赖的依赖,则可以将其视为phantomChildren。包不直接具有此类依赖项,而是从其他地方使用它。
| 归档时间: |
|
| 查看次数: |
1012 次 |
| 最近记录: |