参考:https://stackoverflow.com/questions/19578796/what-is-the-save-option-for-npm-install
npm5.0.0之前
npm install X:
- 会把X包安装到node_modules目录中
- 不会修改package.json
- 之后运行npm install命令时,不会自动安装X
npm install X –save:
- 会把X包安装到node_modules目录中
- 会在package.json的dependencies属性下添加X
- 之后运行npm install命令时,会自动安装X到node_modules目录中
- 之后运行npm install –production或者注明NODE_ENV变量值为production时,会自动安装msbuild到node_modules目录中
npm install X –save-dev:
- 会把X包安装到node_modules目录中
- 会在package.json的devDependencies属性下添加X
- 之后运行npm install命令时,会自动安装X到node_modules目录中
- 之后运行npm install –production或者注明NODE_ENV变量值为production时,不会自动安装X到node_modules目录中
简单来讲就是:
- npm install只是将依赖下载到本地,不会修改package.json
- npm install -save会将依赖下载到本地,并且会修改package.json。提交代码后别人更新下来,npm install就可以跟你保持依赖的一致
- npm install --save-dev表示只在开发环境使使用这个依赖,比如jest。如果将项目打包的时候,这个依赖并不会加入到构建包中,类似于maven中的
<scope>test</scope>
,只对test包下有用,构建出来的包并不包含该依赖。
比如下图的这些依赖是不需要在最终的构建项目中用到的
npm5.0.0之后(包括npm5.0.0)
npm install和npm install --save是等价的,所以–save可以省略
补充
此外npm还有很多命令,npm intall也有其他的选项。具体可以使用以下命令来查看
npm -h
npm install -h