如何计算已安装软件包的数量,包括依赖项

问题描述 投票:5回答:2

有没有一种简单的方法可以获得已安装的npm软件包的数量,包括应用程序的全局和本地软件包?

例如,在运行create-react-app [1]之后,当我输入npm ls命令时,我得到了装满了包和依赖项的屏幕。

如何查找所述包和依赖项的计数(“基数”)使我无法理解。 Tyvm,Keith:^)

参考文献:

  1. https://github.com/facebook/create-react-app
npm count dependencies package
2个回答
5
投票

尝试:

npm ls --parseable | wc -l

1
投票

在最新版本的npm中,它应列出运行npm install(或npm i)后安装/添加的软件包数量:

npm install output

在这种情况下,我正在工作的项目只有几个顶级dependenciesdevDependencies列在package.json281是所有包添加的实际数量。我发布了一个separate question,希望获得有关审计计数差异的更多信息。

所以我认为我上面列出的是获取特定项目计数的最简单方法。但是,让我们再问一下你的问题......

Count for a Project

见上文(基本上删除你的node_modules目录并运行npm i)。

Count for a Specific Package

OP的问题与create-react-app有关。那么,如果我想查看create-react-app的总包数呢?

  1. 从新目录开始。
  2. 运行npm i create-react-app
  3. 看输出......

create-react-app in fresh directory

为什么要创建一个新的目录?因为现有项目可能已经安装了一些create-react-apps依赖项,从而导致added计数不同:

create-react-app in existing project

Count Global Packages

我还没有对这个问题有一个很好的答案(但如果遇到问题,我很乐意更新答案)。因为全局安装(npm i -g ...)不存储在全局package.json中,我认为你不能单独运行npm i -g来计算。似乎一种方法可能是做OP所提到的,意思是......

  1. 运行npm ls
  2. 将输出复制到文本编辑器中并进行行计数。

我确信一些bash向导可以通过将npm ls的输出传递给另一个或多个CLI命令来自动执行此操作,例如(npm ls | count-lines)。

这里需要注意的一点是,我并不是100%确定行数是包的数量的一对一映射。我似乎回忆起npmlist作为一个包依赖的实例,然后在它旁边加上括号,表示它只安装了一次(但列出了多次),符号链接等等。所以再次,不确定一个很好的解决方案全局的。

更新:

npm ls将列出与deduped相关的某些依赖关系,如下所示:

[email protected] deduped

所以npm ls直线计数并不是一个完美的方法,除非你删除deduped线并考虑到像这样的其他标志。

© www.soinside.com 2019 - 2024. All rights reserved.