当我执行"npm 安装"时,npm 在做什么 - 为什么所有这些请求都在运行而不是缓存在我的机器上的某个地方?



我是npm的新手,但每当我在github上的任何基于节点的项目上运行npm install时,无论package.json多么简单,它似乎都会认真地运行至少1分钟,并在控制台中滚动数百甚至数千行这样的行。。。

npm http 304 https://registry.npmjs.org/string_decoder
npm http 304 https://registry.npmjs.org/isarray
npm http GET https://registry.npmjs.org/depd
npm http 304 https://registry.npmjs.org/depd
npm http GET https://registry.npmjs.org/xtend
npm http 304 https://registry.npmjs.org/xtend
npm http GET https://registry.npmjs.org/js-base64
npm http GET https://registry.npmjs.org/source-map
npm http 304 https://registry.npmjs.org/source-map
...

我认为这些一定是正在安装的模块的依赖项?如果是,是否为该项目在本地安装它们?有没有一种方法可以让这些依赖类型查找在我的机器上只存储一次,以节省空间并减少这个过程所需的时间?

回答您的问题:

  1. 是的,这些都是正在安装的依赖项。

  2. 除非将-g添加到命令行,否则模块将在本地安装(尽管添加此参数实际上应该只针对主要提供命令行工具的模块,这些命令行工具可以在shell提示符下执行)。

  3. 它们被缓存。当npm查询注册表时,它会使用特殊的头来询问注册表缓存的副本是否过期。输出中的304是模块查询请求的http状态代码。因此,这里的注册表告诉我们,这些模块并没有过时,可以使用本地缓存的副本。

相关内容

最新更新