npm install -g再次下载所有依赖项

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

我有package.json文件,其中包含10个依赖项,

每次我执行npm install -g时,所有依赖项都会再次下载,这需要很长时间。

有没有办法从本地node_modules目录中获取现有的依赖项?

这是我的package.json依赖项:

  "dependencies": {
    "body-parser": "~1.16.0",
    "colors": "^1.1.2",
    "console-stamp": "^0.2.5",
    "cookie-parser": "~1.4.3",
    "dateformat": "^2.0.0",
    "debug": "~2.6.0",
    "express": "~4.14.1",
    "ip": "^1.1.5",
    "jade": "~1.11.0",
    "lodash": "^4.17.4",
    "morgan": "~1.7.0",
    "nodemon": "^1.11.0",
    "promise": "^8.0.1",
    "rand-token": "^0.3.0",
    "random-date-generator": "^1.0.2",
    "restify": "^4.3.0",
    "restify-cookies": "^0.2.2",
    "serve-favicon": "~2.3.2"
  }

谢谢,

node.js npm npm-install
2个回答
1
投票

npm install -g将当前包上下文(即当前工作目录)安装为全局包。您不需要这个来安装项目依赖项。相反,您可以使用npm install,它将在node_modules文件夹中安装/更新依赖项。默认情况下,npm install将在package.json中安装列为依赖项的所有模块,并且它们不会每次都安装所有依赖项,并且只有在对package.json进行更改或node_modules文件夹被清除时才会更新。

使用npm install -g选项在全球范围内安装软件包,如cordova,gulp,yeoman等,您需要在多个项目中使用它们。


0
投票

从概念上讲,npm-install的输入是package.json,而它的输出是一个完全形成的node_modules树。

这应该不是问题,因为npm使用缓存。如果您已经安装了模块,则返回304,如果给出了相同版本的依赖项,则可以通过将--verbosenpm install命令一起应用来检查它。

我的意思是:

$ npm install express

npm http fetch GET http://registry.npmjs.org/express

npm http fetch GET 200 http://registry.npmjs.org/express

最后,它显示:

++ [email protected]

在12.547s中添加了49个包

如果你再次运行它,你会看到

$ npm install express

npm http fetch GET http://registry.npmjs.org/express 408ms(来自缓存)

npm http fetch GET 304 http://registry.npmjs.org/express 408ms(来自缓存)

最后,它显示:

为package.json跳过写,因为没有更改

++ [email protected]

在4.11s中更新了1个包

它命中缓存,不会再次下载。

当在项目上第二次运行npm install时,它将不会再次下载它只有npm将检查第一级模块以确保它们已安装。

但不遍历依赖关系树以确保安装所有子模块依赖关系。您可以运行npm outdated来检查模块是否缺失但是npm不会为您安装它们。

npm update express更新快速模块及其依赖项。因此,当您已经拥有该模块并希​​望获得新版本时,更新即可。更新将始终更新到最新版本,无论package.json,而npm install将尊重package.json中给出的版本。

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