npm ci命令的基本使用方法


Posted in Javascript onSeptember 20, 2020

偶尔发现npm ci命令,使用下感觉比npm i快了许多,于是也来了解下该命令。

一、用途

npm ci和npm install命令一样,是用来安装依赖的命令,但他可以比常规的 npm 安装快得多,也比常规安装更严格,他可以npm依赖安装的一致和稳定 (锁版本)。

在package.json中,每次install后,对应的版本前都有个 ^ 符号。在这种情况下,你再次install时安装的包的版本可能与前次不一样,具体的,你可以到package-lock.json中查看实际的包版本。

^的匹配规则是:>= 当前版本,且保持从左至右的第一个非零版本。举例说明:

"^1.2.3": 大于等于 1.2.3 且小于 2.0.0版本
"^0.3.4": 大于等于 0.3.4 且小于 0.4.0版本
"^0.0.6": 大于等于 0.0.6 且小于 0.0.7版本

若我们一直使用install命令时,便会遇到开发和测试、发布时包版本不同的问题,这种细微的差别往往会导致严重的结局。

二、用法

在npm i(install)的地方改用npm ci,当然项目中必须有一个package-lock.json或npm-shrinkwrap.json。

注:npm版本要>=5.7。

三、区别

npm ci与npm i主要有以下的区别。

  • npm i依赖package.json,而npm ci依赖package-lock.json。
  • 当package-lock.json中的依赖于package.json不一致时,npm ci退出但不会修改package-lock.json。
  • npm ci只可以一次性的安装整个项目依赖,但无法添加单个依赖项。
  • npm ci安装包之前,会删除掉node_modules文件夹,因此他不需要去校验已下载文件版本与控制版本的关系,也不用校验是否存在最新版本的库,所以下载的速度更快。
  • npm安装时,不会修改package.json与package-lock.json。

该命令在去年2月份就出了,居然现在才了解到,实在是忏愧。

总结

到此这篇关于npm ci命令的基本使用方法的文章就介绍到这了,更多相关npm ci命令内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript(jquery)利用函数修改全局变量的代码
Nov 02 Javascript
一个实用的图片切换支持点击切换和自动轮播
Sep 09 Javascript
使用Browserify配合jQuery进行编程的超级指南
Jul 28 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
Nov 01 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
Sep 04 Javascript
JavaScript实现的微信二维码图片生成器的示例
Oct 26 Javascript
JavaScript中清空数组的三种方式
Mar 22 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
Nov 07 Javascript
十分钟教你上手ES2020新特性
Feb 12 Javascript
Vue切换div显示隐藏,多选,单选代码解析
Jul 14 Javascript
javascript实现扫雷简易版
Aug 18 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 Vue.js
js面试题之异步问题的深入理解
Sep 20 #Javascript
js实现简单的点名器随机色实例代码
Sep 20 #Javascript
前端vue+elementUI如何实现记住密码功能
Sep 20 #Javascript
Vue+element+cookie记住密码功能的简单实现方法
Sep 20 #Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
Sep 18 #Javascript
vue-cli3 热更新配置操作
Sep 18 #Javascript
vue-cli 关闭热更新操作
Sep 18 #Javascript
You might like
php中文本操作的类
2007/03/17 PHP
7个超级实用的PHP代码片段
2011/07/11 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
php使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
laravel框架实现敏感词汇过滤功能示例
2020/02/15 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
jquery select操作的日期联动实现代码
2009/12/06 Javascript
js遍历、动态的添加数据的小例子
2013/06/22 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
基于Node.js实现压缩和解压缩的方法
2018/02/13 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
layui插件表单验证提交触发提交的例子
2019/09/09 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
Python跳出多重循环的方法示例
2019/07/03 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
2020/02/12 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
利用python 读写csv文件
2020/09/10 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
一封普通求职者的求职信
2013/11/20 职场文书
捐书活动总结
2014/05/04 职场文书
物业消防安全责任书
2014/07/23 职场文书
幼儿园大班教学反思
2016/03/02 职场文书