首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >npm列表如何知道哪些是直接依赖关系?

问npm列表如何知道哪些是直接依赖关系?
EN

Stack Overflow用户
提问于 2016-12-17 09:33:09
回答 3查看 1.8K关注 0票数 2

输入这三个命令之后,直接进入一个新命令:

代码语言:javascript
复制
npm install underscore
npm install lodash
npm install express

我得到一个包含许多包的node_modules目录:

代码语言:javascript
复制
$ ls node_modules

accepts              cookie-signature  encodeurl     forwarded    lodash             mime-db      parseurl        send            underscore
array-flatten        debug             escape-html   fresh        media-typer        mime-types   path-to-regexp  serve-static    unpipe
content-disposition  depd              etag          http-errors  merge-descriptors  ms           proxy-addr      setprototypeof  utils-merge
content-type         destroy           express       inherits     methods            negotiator   qs              statuses        vary
cookie               ee-first          finalhandler  ipaddr.js    mime               on-finished  range-parser    type-is

使用npm list时,我可以得到一个树结构:

代码语言:javascript
复制
$ npm list
/tmp/play/npm
├─┬ express@4.14.0
│ ├─┬ accepts@1.3.3
│ │ ├─┬ mime-types@2.1.13
│ │ │ └── mime-db@1.25.0
│ │ └── negotiator@0.6.1
│ ├── array-flatten@1.1.1
│ ├── content-disposition@0.5.1
│ ├── content-type@1.0.2
│ ├── cookie@0.3.1
│ ├── cookie-signature@1.0.6
│ ├─┬ debug@2.2.0
│ │ └── ms@0.7.1
│ ├── depd@1.1.0
│ ├── encodeurl@1.0.1
│ ├── escape-html@1.0.3
│ ├── etag@1.7.0
│ ├─┬ finalhandler@0.5.0
│ │ ├── statuses@1.3.1
│ │ └── unpipe@1.0.0
│ ├── fresh@0.3.0
│ ├── merge-descriptors@1.0.1
│ ├── methods@1.1.2
│ ├─┬ on-finished@2.3.0
│ │ └── ee-first@1.1.1
│ ├── parseurl@1.3.1
│ ├── path-to-regexp@0.1.7
│ ├─┬ proxy-addr@1.1.2
│ │ ├── forwarded@0.1.0
│ │ └── ipaddr.js@1.1.1
│ ├── qs@6.2.0
│ ├── range-parser@1.2.0
│ ├─┬ send@0.14.1
│ │ ├── destroy@1.0.4
│ │ ├─┬ http-errors@1.5.1
│ │ │ ├── inherits@2.0.3
│ │ │ └── setprototypeof@1.0.2
│ │ └── mime@1.3.4
│ ├── serve-static@1.11.1
│ ├─┬ type-is@1.6.14
│ │ └── media-typer@0.3.0
│ ├── utils-merge@1.0.0
│ └── vary@1.1.0
├── lodash@4.17.2
└── underscore@1.8.3

我的问题是:从所有这些依赖项中提取的,npm list undersocre**,如何知道哪些是直接依赖项,例如undersocre**,** lodash 和 express**?**

注意:我没有package.json文件。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-17 10:53:24

它根据模块的依赖关系构建列表。模块的依赖关系在每个模块的package.json中dependencies字段中指定。安装模块时,npm向模块的package.json添加一些附加字段,其中之一是字段_requiredBy,以将依赖项链接也存储在另一个方向。如果运行npm list命令,它将遍历所有模块,并读取每个模块的package.json中的_requiredBy字段。

如果您直接安装一个模块而不将其保存到您的package.json中,则npm将#USER添加到_requiredBy字段以表示您手动安装了它,并且它不仅仅是其他模块的依赖项。然后,npm list也在树的根中显示该模块。

票数 3
EN

Stack Overflow用户

发布于 2020-04-15 11:22:12

您可以使用以下命令:

代码语言:javascript
复制
npm list --depth=0 2>/dev/null
票数 0
EN

Stack Overflow用户

发布于 2016-12-17 10:51:52

npm list命令将打印出树结构中安装的包的所有版本以及它们的依赖项。

所以你只安装了三个软件包

代码语言:javascript
复制
npm install underscore
npm install lodash
npm install express

所有其他包都是express包的依赖项。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41197214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档