【摘要】 从名字我们就可以看出,`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 目录下的依赖;这个操作比较少见,一般在一些服务端自动构建的过程中或者在一些特殊的需求下,会用到这个指令。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐