npm install --save 、--save-dev 、-D、-S 的区别
备注:<=> 意为等价于;
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 的区别的更多相关文章
- node-sass:npm install node-sass --save
从git上拉下来的项目,要先安装依赖, 再运行. 缺少node-sass:npm install node-sass --save
- npm install 插件 --save与 --save -dev的区别
npm i 插件 ,会把插件安装到node_modules目录中,不会修改package.json, npm i 插件 --save ,项目发布上线之后还会依赖用到的插件,没有这些插件,项目不能 ...
- npm全局安装和本地安装和本地开发安装(npm install --g/--save/--save-dev)
详细说明参考:http://www.cnblogs.com/PeunZhang/p/5629329.html 我个人理解: 1.全局安装(npm install -g)是为了用命令行,比如在windo ...
- npm install xxx --save-dev 与npm install xxx --save 的区别
正常情况下: 当你为你的模块安装一个依赖模块时 1.你得先安装他们(在模块根目录下npm install module-name) 2.连同版本号手动将他们添加到模块配置文件package.json中 ...
- [转] npm install 本地安装与全局安装的区别
npm的包安装分为本地安装(local).全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如 npm install grunt # 本地安装 npm install -g ...
- nodejs npm install全局安装和本地安装的区别
npm的包安装分为本地安装(local).全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如:代码如下:复制代码npm install # 本地安装npm install - ...
- 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 ...
- npm install 时--save-dev和--save的区别
package.json中两个字段含义简介 一直在使用npm包管理器,对于npm install module --save-dev 和 npm install module --save这两个的区别 ...
- NPM install -save 和 -save-dev 傻傻分不清
本文原文地址:https://www.limitcode.com/detail/59a15b1a69e95702e0780249.html 回顾 npm install 命令 最近在写Node程序的时 ...
随机推荐
- 顺序表的原理与python中的list类型
数据是如何在内存中存储的? 在32位的计算机上,1个字节有8位,内存寻址的最小单位就是字节.假设我们有一个int类型的值,它从0x10开始,一个int占据4个字节,则其结束于0x13. 那么数据类型有 ...
- 重构file_get_contents实现一个带超时链接访问的函数
function wp_file_get_contents($url, $timeout = 30) { $context = stream_context_create(array( 'http' ...
- shell中,我们可以通过简单的一个判断来判断命令是否存在
shell中,我们可以通过简单的一个判断来判断命令是否存在 which "Command" > /dev/null if [ $? -eq 0 ] then echo com ...
- DS博客作业01--线性表
1.本周学习总结(0--2分) 1.1思维导图 1.2.谈谈你对线性表的认识及学习体会. 1.线性表的内容上了三星期的课,相对来说内容比较丰富,尤其是链表方面,包含单链表,双链表和循环链表.作为第一部 ...
- 如何从日期对象python获取以毫秒(秒后3位小数)为单位的时间值?
要在python中,要获取具有毫秒(秒后3位小数)的日期字符串,请使用以下命令: %f 显示毫秒 import datetime # 获得当前时间 now=datetime.datetime.now( ...
- XP下ubuntu双系统安装方法
利用u盘将iso刻录 从u盘启动 连续按alt+f2 进入ubuntu试用 打开终端 输入 sudo umount -l /cdrom sudo umount -l /isodevice 然后安装un ...
- 2019年春季学期第二周作业 基础作业 请在第一周作业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始)。并将最大值和对应的最小下标数值写入文件。 输入: 请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。 输出 在不删除原有文件内容的情况下,将最大值和对应的最小下标数值写入文件
~~~ include<stdio.h> include<stdlib.h> int main() { FILE*fp; int i=0,max=0,j=0,maxb=0; i ...
- Centos-7.4_安装_Redis_4.0.8
一.安装redis 第一步:下载redis安装包 [root@Redis ~]# mkdir /usr/local/redis/ --创建目录 [root@Redis redis]# cd /usr/ ...
- 微信小程序字符串替换
字符串替换有两种,一种是替换一个子字符串,一种是将子字符串全部替换 替换一个子字符串 要求:将“ ”(空格)替换成“,” var isguestnumbername=“aaa bbb ccc” isg ...
- 魔方---java
package LMS; import java.awt.AWTException;import java.awt.Robot;import java.awt.event.InputEvent;imp ...