save-dev和save的区别
果你经常用NPM安装依赖包,会注意到安装包时的指令会分--save-dev
和--save
两种,有什么区别呢?
在项目中我们通常会有一个package.json
的配置文件,用来保存项目的相关配置信息,其中最重要的就是该项目的相关依赖包。其他用户在拿到该配置文件时,只需要用npm install
就可以根据配置文件下载相关的依赖包,搭建好与开发者相同的环境。
npm install
到底要安装什么依赖,这些都在配置文件中有标明。下图是一个package.json
文件的内容:
我们上面提到的依赖就是图片中的devDependencies
和dependencies
两项。其中的dependencies
是项目在发布或运行时所依赖的模块和包,而devDependencies
是项目在开发时所依赖的包。
就我的理解而言,devDependencies
中的包都是开发或打包时所需的工具,而在项目打包生成要发布的文件后,devDependencies
中的包对于生成文件就没有任何用处了。反而dependencies
中的包是相关的类库,是发布文件正常运行的环境基础,否则项目就无法正常运行。
因此webpack
类的工具应该是devDependencies
,而jquery
、react
就应该是dependencies
。
讲到这里你应该就明白了,--save-dev
和--save
的区别了。在安装包时加上--save-dev
参数会在成功安装后,package.json
文件的devDependence
下会自动加上包的名称及版本。反之使用--save
,则是在dependencies
下添加依赖信息。
正常使用npm install
时,会下载dependencies
和devDependencies
中的模块,当使用npm install --production
或者注明NODE_ENV
变量值为production
时,只会下载dependencies
中的模块。