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

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则只会安装生产环境的所有模块,而无视开发环境的相关模块。

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

npm install --save 、--save-dev 、-D、-S 的区别的更多相关文章

  1. node-sass:npm install node-sass --save

    从git上拉下来的项目,要先安装依赖, 再运行. 缺少node-sass:npm install node-sass --save

  2. npm install 插件 --save与 --save -dev的区别

    npm i 插件   ,会把插件安装到node_modules目录中,不会修改package.json, npm i 插件 --save  ,项目发布上线之后还会依赖用到的插件,没有这些插件,项目不能 ...

  3. npm全局安装和本地安装和本地开发安装(npm install --g/--save/--save-dev)

    详细说明参考:http://www.cnblogs.com/PeunZhang/p/5629329.html 我个人理解: 1.全局安装(npm install -g)是为了用命令行,比如在windo ...

  4. npm install xxx --save-dev 与npm install xxx --save 的区别

    正常情况下: 当你为你的模块安装一个依赖模块时 1.你得先安装他们(在模块根目录下npm install module-name) 2.连同版本号手动将他们添加到模块配置文件package.json中 ...

  5. [转] npm install 本地安装与全局安装的区别

    npm的包安装分为本地安装(local).全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如 npm install grunt # 本地安装 npm install -g  ...

  6. nodejs npm install全局安装和本地安装的区别

    npm的包安装分为本地安装(local).全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如:代码如下:复制代码npm install # 本地安装npm install - ...

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

    npm install X: 会把X包安装到node_modules目录中 不会修改package.json 之后运行npm install命令时,不会自动安装X npm install X –sav ...

  8. npm install 时--save-dev和--save的区别

    package.json中两个字段含义简介 一直在使用npm包管理器,对于npm install module --save-dev 和 npm install module --save这两个的区别 ...

  9. NPM install -save 和 -save-dev 傻傻分不清

    本文原文地址:https://www.limitcode.com/detail/59a15b1a69e95702e0780249.html 回顾 npm install 命令 最近在写Node程序的时 ...

随机推荐

  1. nagios的安装与部署

    参考文献: https://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html https://www.jianshu.com/p/3476d ...

  2. ActivityRouter 框架简单实用

    ActivityRouter组件化开发小助手用法如下: 跟目录build.gradle dependencies { // activityRouter classpath 'com.neenbeda ...

  3. JavaScript学习day3 (基本语法下)

    if/else for while 函数的使用 JavaScript语句 if/else 语句 JavaScript 中的if/else 判断选择,语法格式是这样的 switch/case 语句 在做 ...

  4. Mysqlutil.JDBCutil.Dtabaseutil数据库操作工具类[批量操作]

    一个用来操作数据库的常用工具类. 提供批量操作,生成建表,插入语句等 操作示例: // 1.获取连接 DataBaseUtil jdbc = new DataBaseUtil(); jdbc.getC ...

  5. [daily][netcat] 在UNIX socket上使用netcat

    概述 默认情况下,系统里边带的netcat,也就是nc.支持tcp,udp,ipv4,ipv6但是不支持unix socket. 而且,telnet也不支持. 除非自己写一个,不然很不方便. 另一个n ...

  6. WinAPI 字符及字符串函数(9): lstrcat - 合并字符串

    unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...

  7. Alibaba, I'm interested in you.

    Working for Alibaba is an aspiration for some. For other it’s the possibility of lucrative stock opt ...

  8. csrf jsonp

    网站b中包含向网站a发送的请求,那么网站b就会获得网站a的cookie,网站a登录了则网站b的cookie中会有网站a的sessionid,此时如果网站a对外提供需要sessionid的jsonp接口 ...

  9. 搭建docker私有仓库

    保存镜像的地方成为仓库(registry).目前有2种仓库:公共仓库和私有仓库. 最方便的是使用公共仓库上传和下载镜像,下载不需要注册,上传需要到公共仓库注册.公共仓库网站:https://hub.d ...

  10. #20175201 实验一 Java开发环境的熟悉(Linux + Eclipse)

    一.实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. (一)命令行下Java程序开发 1.过程 2.结果 调试代码遇到的问题: 解决 ...