首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >npm安装数百个软件包

npm安装数百个软件包
EN

Stack Overflow用户
提问于 2018-05-22 18:52:47
回答 1查看 200关注 0票数 1

npm现在每一次都安装一个包-lock.json,这似乎是npm的一部分。但是,当使用npm运行这个简单的package.json文件时,会安装超过300个包。什么会出错,为什么会有300+?即使在运行时没有包锁文件(然后创建锁文件)并仍然给出300+包。

代码语言:javascript
复制
{
  "name": "Package",
  "version": "0.0.1",
  "dependencies": {},
  "devDependencies": {
    "grunt": "^1.0.2",
    "grunt-contrib-clean": "^1.1.0",
    "grunt-contrib-compress": "^1.4.3",
    "grunt-contrib-concat": "^1.0.1",
    "grunt-contrib-connect": "^1.0.2",
    "grunt-contrib-copy": "^1.0.0",
    "grunt-contrib-cssmin": "^2.2.1",
    "grunt-contrib-uglify": "^3.3.0",
    "grunt-contrib-watch": "^1.1.0",
    "grunt-sass": "^2.1.0",
    "grunt-usemin": "^3.1.1"
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-22 19:00:09

这些包依赖于其他包,这些包依赖于其他包,而这些包依赖于其他包…。。包管理器解决了整个依赖关系图,它可以很容易地从一个看似无辜的初始列表中增长到数百个。

您提到的package-lock.json文件可以帮助您理解这种情况是如何发生在特定的依赖项上的。去找"requires"。例如,在您的设置中,grunt-sass需要node-sass

代码语言:javascript
复制
"grunt-sass": {
  "version": "2.1.0",
  "resolved": "https://registry.npmjs.org/grunt-sass/-/grunt-sass-2.1.0.tgz",
  "integrity": "sha512-XkexnQt/9rhReNd+Y7T0n/2g5FqYOQKfi2iSlpwDqvgs7EgEaGTxNhnWzHnbW5oNRvzL9AHopBG3AgRxL0d+DA==",
  "dev": true,
  "requires": {
    "each-async": "1.1.1",
    "node-sass": "4.9.0",
    "object-assign": "4.1.1"
  }
},

…它有19个独立的依赖项:

代码语言:javascript
复制
"node-sass": {
  "version": "4.9.0",
  ...
  "requires": {
    "async-foreach": "0.1.3",
    "chalk": "1.1.3",
    "cross-spawn": "3.0.1",
    "gaze": "1.1.3",
    "get-stdin": "4.0.1",
    "glob": "7.0.6",
    "in-publish": "2.0.0",
    "lodash.assign": "4.2.0",
    "lodash.clonedeep": "4.5.0",
    "lodash.mergewith": "4.6.1",
    "meow": "3.7.0",
    "mkdirp": "0.5.1",
    "nan": "2.10.0",
    "node-gyp": "3.6.2",
    "npmlog": "4.1.2",
    "request": "2.79.0",
    "sass-graph": "2.2.4",
    "stdout-stream": "1.4.0",
    "true-case-path": "1.0.2"
  },
  ...
}

…而其中之一,request本身就引入了另外20种:

代码语言:javascript
复制
"request": {
  "version": "2.87.0",
  ...
  "requires": {
    "aws-sign2": "0.7.0",
    "aws4": "1.7.0",
    "caseless": "0.12.0",
    "combined-stream": "1.0.6",
    "extend": "3.0.1",
    "forever-agent": "0.6.1",
    "form-data": "2.3.2",
    "har-validator": "5.0.3",
    "http-signature": "1.2.0",
    "is-typedarray": "1.0.0",
    "isstream": "0.1.2",
    "json-stringify-safe": "5.0.1",
    "mime-types": "2.1.18",
    "oauth-sign": "0.8.2",
    "performance-now": "2.1.0",
    "qs": "6.5.2",
    "safe-buffer": "5.1.2",
    "tough-cookie": "2.3.4",
    "tunnel-agent": "0.6.0",
    "uuid": "3.2.1"
  }
},

你可以看到,它是如何如此迅速地达到300。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50474625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档