package.json文件里的dependencies和devDependencies有什么区别吗?

gentle_zhou 发表于 2022/04/14 14:42:26 2022/04/14
【摘要】 从名字我们就可以看出,`devDependencies`是用于在开发环境下依赖的模块,而`dependencies`就是无论开发环境还是生产环境都需要的依赖模块

在开发Angular项目的时候,需要在package.json文件里标记本项目需要哪些npm依赖包,其中就会有dependenciesdevDependencies两个字段;那么它们分别代表什么,又有什么区别呢?

"dependencies": {
    "@angular/common": "2.0.0",
    "@angular/compiler": "2.0.0",
    "@angular/core": "2.0.0",
    "@angular/forms": "2.0.0",
    "@angular/http": "2.0.0",
    "@angular/platform-browser": "2.0.0",
    "@angular/platform-browser-dynamic": "2.0.0",
    "@angular/router": "3.0.0",
    "@angular/upgrade": "2.0.0",
    "core-js": "^2.4.1",
    "reflect-metadata": "^0.1.3",
    "rxjs": "5.0.0-beta.12",
    "systemjs": "0.19.27",
    "zone.js": "^0.6.23",
    "angular2-in-memory-web-api": "0.0.20",
    "bootstrap": "^3.3.6"
  },
  "devDependencies": {
    "concurrently": "^2.2.0",
    "lite-server": "^2.2.2",
    "typescript": "^2.3.4",
    "typings": "^1.3.2"
  }

从名字我们就可以看出,devDependencies是用于在开发环境下依赖的模块,而dependencies就是无论开发环境还是生产环境都需要的依赖模块。

举个上面中代码的栗子,依赖concurrently,lite-server,typescript和typings只是我们在开发中需要使用的包,上线以后项目的运行就不需要了,因此就放在devDependencies依赖里;而dependencies里那些依赖:angular/XXXX,core-js,reflect-metadata,rxjs,systemjs,zone.js,angular2-in-memory-web-api,bootstrap 则是我们整个项目运行时候就需要的,因此放在dependencies里。

而当团队里其他人clone这个项目进行开发调试的时候,就可以通过npm install操作一键安装这两个目录下所有的依赖,而不用去一行行找都在文件中引用了哪些依赖。

注:如果其他人输入的是npm install --production 指令,那么就只会安装dependencies 目录下的依赖;这个操作比较少见,一般在一些服务端自动构建的过程中或者在一些特殊的需求下,会用到这个指令。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。