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

时间:2018-02-01 17:03:22

标签: npm count dependencies package

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

例如,在运行create-react-app [1]之后,当我输入npm ls命令时,我会安装完整的软件包和依赖项。

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

参考文献:

  1. https://github.com/facebook/create-react-app

3 个答案:

答案 0 :(得分:5)

尝试:

import numpy as np
import numpy.random as npr
import matplotlib.pyplot as plt

npr.seed(101)

N = np.zeros(11)
N[0]=100
tvec = np.arange(0, 10, 1)
r_values = npr.normal(loc=2,scale=3, size=10)

for t,r in zip(tvec, r_values):
    #print(t,r)
    N[t+1]=(1+r**3)+N[t]

plt.hist(N)

答案 1 :(得分:1)

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

npm install output

在这种情况下,我正在工作的项目在dependencies中仅列出了几个顶级devDependenciespackage.json,但是281是所有软件包的实际计数添加。我发布了separate question,希望获得更多有关审计计数差异的信息。

所以,我认为我上面列出的是获取特定项目数量的最简单方法。但是,让我们进一步分解您的问题...

计入项目

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

计数特定的包裹

OP的问题以create-react-app涉及。那如果我想查看create-react-app的总包数怎么办?

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

create-react-app in fresh directory

为什么要创建一个新目录?由于现有项目可能已经安装了create-react-app个依赖项,因此导致added的数量有所不同:

create-react-app in existing project

计算全局包裹数

我对此没有一个很好的答案(但是如果我们遇到一个答案,我很乐意更新答案)。因为全局安装(npm i -g ...)不会存储在全局package.json中,所以我不认为您可以单独运行npm i -g来获取计数。似乎一种方法可能是执行OP所提到的,这意味着...

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

而且我确信某些bash向导可以通过将npm ls的输出传递到另一个CLI命令或两个CLI命令来自动执行此操作。 (npm ls | count-lines

这里要注意的一件事是,我不是100%地确定行数是软件包数量的一对一映射。我似乎回想起npmlist依赖于某个程序包的情况,但随后在其旁边加上括号,表明该程序仅安装了一次(但多次列出),被符号链接等。 ,还不确定是否有适合全球客户的好解决方案。

更新:

npm ls将列出某些依赖项,并在其旁边带有deduped,如下所示:

loud-rejection@1.6.0 deduped

因此,除非您删除npm ls行,并考虑到其他类似标志的行,否则deduped的直线计数并不是一种理想的方法。

答案 2 :(得分:1)

为了计算唯一的依赖性,您应该排除重复数据删除的程序包:

npm ls | sed '/deduped$/d' | wc -l