npm中--save、--save-dev、-S、-D的区别

2021/4/29 NPM

# 结论

  • --save等价于-S
  • --save-dev等价于-D

就如同npm install等价于npm i一样,缩写写法。

各种安装命令

npm i xxxxx

npm i xxxxx -g

npm i xxxxx --save
npm i xxxxx -S

npm i xxxxx --save-dev
npm i xxxxx -D
1
2
3
4
5
6
7
8
9

说明:

  1. npm i xxxxx会把模块安装到node_modules目录下,写入模块信息到package.jsondependencies中(npm 10.8.2)。
  2. npm i xxxxx -g会把模块安装到全局,地址是npm config get prefix的地址,不会写入模块信息到package.json中,在项目安装依赖时使用npm i不会安装到它。
  3. npm i xxxxx --savenpm i xxxxx -S等价,都是把模块安装到package.json中的dependencies下,作为项目生产环境的依赖。
  4. npm i xxxxx --save-devnpm i xxxxx -D等价,都是把模块安装到package.json中的devDependencies下,作为项目开发环境的依赖。

TIPS

使用npm i安装package.json里的依赖时,dependenciesdevDependencies两部分的包都会pull下来,所以在一般情况下装哪里只是个规范问题,装错了项目依然可以运行。

npm install --productionnpm i --prod)或者注明NODE_ENV=production时,只会下载dependencies中的模块。

WARNING

如果是发布包到npm仓库,别人下载使用,此时依赖装在哪里有很大的影响。

比如eslintnode-sass这些只在开发环境使用的,应该装在devDependencies下,像vuevuex这些在发布后依然需要使用,使用者在安装你所发布的包时,同时会安装dependencies下的依赖,不会去安装devDependencies,如果依赖包信息位置错误将会导致项目无法正常使用。

最近更新: 2025年03月13日 17:49:47