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

时间:2022-07-26 08:35:24

备注:<=> 意为等价于;

1、npm install <=> npm i

--save   <=> -S

--save-dev  <=> -D

npm run start <=> npm start  // 对应"scripts"里的"start"命令

少敲几下键盘,何乐而不为

2、npm i --save-dev  <packname>

工程构建(开发时、“打包”时)依赖 ;例:xxx-cli , less-loader , babel-loader...

在 package.json 文件里面体现出来的区别就是,使用 --save-dev 安装的插件,被写入到 devDependencies 对象里面去,而使用 --save 安装的插件,则被写入到 dependencies 对象里面去。

3、npm i --save <packname>

项目(运行时、发布到生产环境时)依赖;例:antd , element,react...

那 package.json 文件里面的 devDependencies和dependencies对象有什么区别呢?

devDependencies是对开发环境所需依赖的声明(构建工具,测试工具) ,比如:babel,webpack,都放到当前目录。

而 dependencies是对生产环境所需依赖的声明(开发应用中使用的框架,库) ,比如:jq,react,vue都需要放到这里面。

4、对应关系如下(至于我们啥时候用--save、啥时候用--save-dev 感觉是个规范问题,用反了项目一样可以跑起来(对于安装依赖正确时),但会给其他看你项目的人带来误解、可能会导致一些bug的出现,还有一些配置的错乱等)

总结一下:

总体比较:

npm install module:

会把module包安装到node_modules目录中;

不会修改package.json;

之后运行npm install 命令时,不会自动安装module包。

npm install module --save

会把module包安装到node_modules目录汇总;

会修改package.json,将模块名和版本号添加到dependencies部分;

之后运行npm install 命令时,会自动安装module包;

之后运行npm install --production或者注明NODE_ENV变量值为production时,会自动安装 module到node_modules目录中,即是在线上环境运行时会将包安装。

npm install module --save-dev

会把module包安装到node_modules目录汇总;

会修改package.json,将模块名和版本号添加到devDependencies部分;

之后运行npm install 命令时,会自动安装module包;

之后运行npm install --production或者注明NODE_ENV变量值为production时,不会自动安装msbuild到node_modules目录中,即是在线上环境并不会进行安装。

--save和--save-dev可以省掉我们手动修改package.json文件的步骤。我们使用的一些打包工具、非项目必须依赖的都放在devDependencies中。

如何判断?

一种是你在使用当前模块的时候,当前模块在github上会告诉你,它需要使用哪种方式安装。

另一种就是你靠自己判断如何安装在哪个里面。

如何使用?

如果我们转移一个项目或者下载了一个别人的项目时,是不会带有node_modules目录中的模块的,所以我们拿到项目以后,是需要在根目录进行npm install进行项目安装的,这种默认是生产环境和开发环境都会安装。

如果带上后缀npm install --production则只会安装生产环境的所有模块,而无视开发环境的相关模块。

我们可以通过分开生产环境和开发环境相关的模块,还可以减少安装时间。达到节约时间的目的。