Krz*_*bek 18 javascript node.js npm package-lock.json
在依赖对象的package-lock.json中,我有两个requires
和dependencies
字段,例如
"requires": {
"@angular-devkit/core": "0.8.5",
"rxjs": "6.2.2",
"tree-kill": "1.2.0",
"webpack-sources": "1.3.0"
},
"dependencies": {
"rxjs": {
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz",
"integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==",
"dev": true,
"requires": {
"tslib": "1.9.3"
}
}
}
Run Code Online (Sandbox Code Playgroud)
这两者有什么区别?为什么一些依赖列在requires
,其他的dependencies
,其中一些在这两个领域?
Gui*_*chi 19
阅读以上答案后。也许我可以用更简单的方式来表达
requires
可以共享,而所有其他高层之间的依赖关系由dependencies
是独立的,只有属于该模块需要它
IE
"@angular-devkit/core": "0.8.5"
,"tree-kill": "1.2.0"
,"webpack-sources": "1.3.0"
不属于唯一的模块,他们都在同一水平模块需要它们。相比之下,"rxjs": "6.2.2"
仅因模块需要而存在。并且只被模块使用
Krz*_*bek 15
详细解释,基于Barr J的答案:
默认情况下,npm直接将所有软件包安装在中node_modules
。
但是,假设X
软件包Z
在1.0版Y
中依赖于package Z
,而软件包在2.0版中依赖于同一package 。在这种情况下,我们必须安装此软件包的两个版本。一个将安装在根node_modules
文件夹中,另一个将安装在node_modules
相关软件包的文件夹中,例如
package.json
node_modules
/X
/Y
/Z@2.0
/Z@1.0
Run Code Online (Sandbox Code Playgroud)
有了这些知识,就很容易理解:
“ requires”反映了package.json
文件的依赖关系,而“ dependencies”反映了此依赖关系在node_modules文件夹中实际安装的依赖关系。
归档时间: |
|
查看次数: |
1966 次 |
最近记录: |