当我做'npm install'的时候,npm在做什么? – 为什么所有这些请求都被运行,而不是被caching在我的机器上?

我是新来的npm ,但是每当我运行npm install在任何基于节点的项目上,我得到的github,似乎至less认真运行了大约1分钟,无论package.json是多么简单,滚动数百,如果不是这样在控制台中的数千行…

 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 ... 

我认为这些必须是正在安装的模块的依赖关系? 如果是这样,他们是否在本地安装这个项目? 有没有一种方法可以使这些依赖types的查找在我的机器上只存储一次,以节省空间,并减less这个过程所花费的时间?

回答你的问题:

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

  2. 除非将-g添加到命令行,否则模块将在本地安装(尽pipe添加此参数实际上只适用于主要提供在shell提示符下执行的命令行工具的模块)。

  3. 他们被caching。 当npm查询registry时,它使用特殊的标题询问registry,如果caching的副本是否过期。 输出中的304是模块查询请求的http状态码。 所以这里的registry告诉我们,这些模块没有过时,可以使用本地caching的副本。