如何列出npm用户安装的软件包?


628

如何仅在列出用户安装的软件包npm?当我这样做时,npm -g list它会输出每个包及其依赖性,这不是我想要的。

Answers:


1244

这也很好: npm list -g --depth=0

  • npm:节点程序包管理器命令行工具
  • list -g:显示在用户文件夹中找到的每个软件包的树(不带-g选项,仅显示当前目录的软件包)
  • depth 0 / — depth = 0:避免在树形视图中包括每个包的依赖项

返回空结果。我的npm版本是3.6.0。
Bagusflyer

4
为什么--depth=0在我运行时未提及该选项npm help ls
Marecky

如果您使用来将模块安装在另一个文件夹中--prefix,那么您也需要在--prefixnpm list命令中添加模块。
Sany Liew

1
添加| grep -v "duped"以将重复的依赖项删除到列表上可能也很好
Spencer Pollock

1
在Windows上完美工作。
阳光明媚的prakash

132

您可以使用以下命令获取所有全局安装的模块的列表:

ls `npm root -g`


13
ls -lh `npm root -g`将它们显示在一个不错的列表中。
LanceLafontaine 2015年

3
该解决方案比最受好评的解决方案要快得多。
DarkNeuron

3
这个解决方案很好,但是 npm list -g --depth=0 可以打印出很好的版本。无论如何,我不知道这个命令,所以+1。
像素

3
npm root -g | gci在Windows上的Powershell中
Lars

1
这不适用于@scoped模块
Franz Sittampalam

113

截至2015年12月13日

npm列表图

虽然我发现接受的答案100%正确且有用,但希望根据自己的经验在此基础上进行一些扩展,并希望也能为其他人带来好处。(在这里,我可以互换地使用术语包和模块)

在回答问题时,可以接受的答案是:

npm list -g --depth=0

您可能希望检查在* nix系统上/ grep可用时全局安装的特定模块。这在检查您正在使用的模块的版本时特别有用(全局安装,如果检查本地模块,只需删除-g标志):

npm list -g --depth=0 | grep <module_name>

如果您想查看特定模块的所有可用(远程)版本,请执行以下操作:

npm view <module_name> versions

注意,版本是复数。这将为您提供可供选择的版本的完整列表。

对于最新的远程版本:

npm view <module_name> version  

注意,版本是单数。

要找出需要更新的软件包,可以使用

npm outdated -g --depth=0

要更新全局软件包,可以使用

npm update -g <package>

要更新所有全局软件包,可以使用:

npm update -g

(但是,对于低于2.6.1的npm版本,也请参阅此链接,因为建议使用特殊脚本来全局更新所有软件包)。

以上命令应可在NPM 1.3.x,1.4.x,2.x和3.x版本中使用


要更新特定的全局软件包:npm update -g <package>。我相信这里update比较可取,install因为npm会很聪明,并且仅在指定的软件包已过期的情况下进行安装。
罗宾·米德

1
@Talespin_Kit可能是screentogif
forresthopkinsa

@Talespin_Kit ShareX非常适合创建和共享gif屏幕截图(以及任何其他屏幕截图)。
亚伦·贝尔



17
npm ls

npm list 只是它的别名 npm ls

对于扩展信息使用

npm la    
npm ll

您总是可以--depth=0在最后进行设置,以使第一级更深入。

npm ls --depth=0

您可以检查开发和生产包。

npm ls --only=dev
npm ls --only=prod

json格式显示信息

npm ls --json=true

默认是 false

npm ls --json=false

您可以坚持使用长格式来显示扩展信息。

npm ls --long=true

您可以显示可解析的输出,而不是树状视图。

npm ls --parseable=true

您可以在全局安装前缀中而不是在当前项目中列出软件包。

npm ls --global=true
npm ls -g // shorthand

您可以在此处找到完整的文档。


8

节点具有本地模块和全局模块的概念

本地模块位于当前项目目录中。

全局模块通常位于用户的主目录中,尽管我们可以更改全局模块所在的路径。

  1. 列出当前目录中的本地模块: npm list
  2. 列出全局模块:npm list --globalOR npm list --g //将列出所有顶级模块及其依赖项
  3. 仅列出顶级(已安装模块)全局模块: npm list -g --depth=0

7

一种方法是使用以下命令查找模块的根目录:

npm root
/Users/me/repos/my_project/node_modules

然后列出该目录...

ls /Users/me/repos/my_project/node_modules
grunt                   grunt-contrib-jshint

在这种情况下,用户安装的软件包是grunt和grunt-contrib-jshint


1
为什么不使用官方内置的npm命令?npm list -g --depth=0
库克斯2015年

这种方式可以帮助开发人员了解
幕后情况

1
这不是100%正确的。当我运行命令时,npm root 它告诉我:Users/me/node_modules 这是不正确的。我的node_modules居住在其他地方。我猜这取决于您如何安装节点。我brew用来安装软件。我猜这是您是否使用他们的软件包安装程序从他们的网站安装节点?
2016年

我认为这取决于您的环境变量。查看您的环境中设置的$ NPM ... vars。我有一个自定义设置,使用virtualenv和Activate钩子完全从头开始完全重写$ PATH,具体取决于项目使用的内容。
obimod '17

2
对我来说,我的npm坏了,所以我无法使用命令。我想进行完全重新安装,因此我需要知道我已全局安装了哪些软件包才能进行重建。
bryjohns


5

npm -g outdated --depth=0过去常常
在全球范围内列出过时的版本。


3

Node_modules包含用户安装的软件包,因此将目录更改为node_modules并列出项目。核心模块lib/文件夹的节点源中定义。

Example:

     example@example:~/:~/node_modules$ ls
     express  maxmind-native  node-whois  socket.io  ua-parser-js
     geoip    mongoskin       pdfkit      tail       zeromq
     maxmind  nodemailer      request     ua-parser  zmq




By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.