在通过npm安装依赖的时候,有两种方式:npm install XXX --save-dev(下文简称--save-dev)与npm install XXX --save(下文简称--save),它们都可以将依赖信息写入到package.json文件内。那他们之间有什么区别呢?下面我们进行进一步的分析。
区别1:通过--save-dev方法安装的依赖,会将该依赖信息加载到package.json的"devDependencies"键下,而通过--save方法安装的依赖则会将信息加载到pacage.json的"dependencies"键下。package.json代码如下:
...
"devDependencies": {
...
"babel": "^6.23.0",
"style-loader": "^0.16.1",
"vue-loader": "^11.3.4",
"vue-style-loader": "^2.0.5",
...
},
"dependencies": {
...
"vue": "^2.2.6"
...}
...
代码所表现的区别1就是:vue通过--save方式添加,babel、style-loader、vue-loader、vue-style-loader通过--save-dev方式添加。
除了区别1外,这两种方式还有区别2。
区别2:npm官方解释:devDependencies是开发(开发环境)时的依赖,dependencies是运行(生产环境)时的依赖。这就是说,devDependencies下的依赖只是在开发时起作用,运行时并不需要这些依赖,比如:html-webpack-plugin(生成html文件)、extract-text-webpack-plugin(提取样式到单独的css文件)等。与之对应的,dependencies下的依赖不仅在开发时需要,在发布后仍然会使用的到,比如:vue,vue-router,vuex,jQuery等,如果通过--save-dev方式安装这些依赖,那么在打包后运行会出现错误。
额外说明:当我们在github上clone一个项目的时候,README.md通常会有安装说明,一般的方式是通过npm install直接安装需要的所有依赖(包括devDependencies和dependencies),之后项目才可以正常启动。