install
命令在不同的上下文中有不同的含义,例如在 Unix/Linux 系统中,install
是一个用来复制文件和设置属性的命令,然而,根据你的问题提法,这里似乎指的是在 Node.js 环境中使用的 npm install
或 yarn add
等命令中使用的参数。在 Node.js 包管理器(npm 或 yarn)中,-g
、-S
和 -D
等参数用于指定安装包的不同方式和目的。
命令 | 含义 |
---|---|
npm install | 下载“package.json”中dependencies和devdependencies中配置的所有依赖模块,并保存到项目的node_modules目录 |
npm install xxx -g | 全局安装,下载依赖模块,并保存到%node_home%\node_global\node_modules目录下 |
npm install xxx -S | 写入到package.json的dependencies对象,并保存到项目的node_modules目录 |
npm install xxx -D | 写入到package.json的devDependencies对象,并保存到项目的node_modules目录 |
注1:在git clone
项目的时候,项目文件中并没有node_modules
文件夹,为什么呢?
我们知道这个文件中(project_home\node_modules
)保存的是我们项目开发中所使用的依赖模块,这个文件夹可能有几百兆大小,如果放到github
上,其它人clone
的时候会非常慢,这个时候就想到用一个package.json
依赖配置文件解决这个问题,这样每个人下载这个项目的时候,只需要进入该项目目录直接npm install npm
就会到里面去找需要的函数库,也就是依赖。
缩写命令的全称,注意大小写、-S
,-D
都是大写
命令 | 简称 |
---|---|
install | i |
--save | -S |
--save-dev | -D |
--global | -g |
-g
(全局安装)
npm install -g <package-name>
或 yarn global add <package-name>
命令时,-g
参数用于全局安装一个包。这意味着这个包将被安装在系统的全局目录中,并且它的可执行文件(如果有的话)将被添加到系统的 PATH 中,从而可以从任何位置调用它。-S
(也就是 --save
的缩写)
npm install <package-name> -S
会将包添加到 package.json
文件中的 dependencies
部分。这是用于那些在应用运行时需要依赖的包。从 npm 5 开始,默认行为已经改变,现在即使不加 -S
参数,安装的包也会自动被添加到 package.json
的 dependencies
中。-D
(也就是 --save-dev
的缩写)
npm install <package-name> -D
或 yarn add <package-name> --dev
命令时,-D
参数用于将包添加到 package.json
文件中的 devDependencies
部分。devDependencies
是指那些仅在开发过程中需要的包,例如编译工具、测试框架和代码压缩工具等。在生产环境部署应用时,通常不会安装 devDependencies
。总结一下,-g
用于全局安装,-S
(通常已非必需)用于添加到 dependencies
,而 -D
用于添加到 devDependencies
。随着包管理器(特别是 npm)的发展,这些标志的默认行为可能已经发生了变化,但它们的基本含义保持一致。