当我在NPM上搜索包时,我想看到包的大小(KB或MB等)。NPM似乎没有显示这一信息。

我如何确定一个NPM包会给我的项目增加多少膨胀?


当前回答

在发布npm包之前,你可以使用下面的命令检查包的大小。

NPM发布——试运行

我已经附上了npm包的结果。

其他回答

看看这个模块成本项目。这是一个npm包,它会列出包的大小和子元素的数量。

安装: NPM install -g cost-of-modules

用法: 在您工作的目录中运行cost-of-modules。

你可以查看npm-module-stats。它是一个npm模块,可以获取npm模块的大小及其依赖项,而无需安装或下载该模块。

用法:

var stats = require("npm-module-stats");

stats.getStats("glob").then((stack) => {

  let dependencies = Object.keys(stack);
  let totalSize = dependencies.reduce((result, key, index) => {
    return result + stack[key].size;
  }, 0);

  console.log('Total Size in Bytes ', totalSize);
  console.log('Total Dependencies ', dependencies.length-1);

}).catch((err) => {
  console.error(err);
});

它可能看起来有点啰嗦,但它解决了您恰当描述的问题。

我已经创建了一个工具npm download size,它可以检查给定npm包的tarball大小,包括依赖树中的所有tarball。这可以让您了解预先添加依赖项的成本(安装时间、磁盘空间、运行时资源、安全审计……)。

在上图中,Tarball size是package的tar.gz, Total size是所有Tarball的大小。这个工具非常基本,但它做到了它所说的。

还可以使用cli工具。你可以这样安装:

npm i -g download-size

像这样使用它:

$ download-size request
request@2.83.0: 1.08 MiB

源代码可在Github: api, cli工具和web客户端。

今年早些时候,我创建了“Package Phobia”,希望能在npmjs.com上获取包装大小信息,并跟踪包装膨胀的情况。

https://packagephobia.com

这是为了在你为服务器端依赖项(如express)或开发依赖项(如jest)运行npm install后测量磁盘空间。

您可以在这里阅读关于此工具和其他类似工具的更多信息:https://github.com/styfle/packagephobia


更新2020

“解包大小”(基本上是发布大小)可在npmjs.com网站上与“总文件”一起使用。然而,这不是递归的,这意味着npm的安装可能会更大,因为一个包可能依赖于许多包(因此包恐惧症仍然相关)。

还有一个未决的RFC用于从CLI打印此信息的特性。

Howfat是另一个显示总包装大小的工具:

npx howfat jasmine