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 相关文章推荐
JS中的this变量的使用介绍
Oct 21 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
Jun 23 Javascript
javascript实现下雨效果
Mar 27 Javascript
Vue实现选择城市功能
May 27 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
Dec 10 Javascript
史上最为详细的javascript继承(推荐)
May 18 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
Apr 07 Javascript
jQuery实现的移动端图片缩放功能组件示例
May 01 jQuery
Vue CLI4 Vue.config.js标准配置(最全注释)
Jun 05 Javascript
基于JS实现快速读取TXT文件
Aug 25 Javascript
解决removeEventListener 无法清除监听的问题
Oct 30 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
Nov 04 Javascript
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的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
Thinkphp事务操作实例(推荐)
2017/04/01 PHP
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
js跳转页面方法实现汇总
2014/02/11 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
2020/03/04 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
用Python解决计数原理问题的方法
2016/08/04 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
python使用tornado实现登录和登出
2018/07/28 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
python实现弹跳小球
2019/05/13 Python
python实现银行实战系统
2020/02/26 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
HTML5有哪些新特征
2015/12/01 HTML / CSS
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
自我鉴定注意事项
2014/01/19 职场文书
入党申请自荐书范文
2014/02/11 职场文书
安全生产责任书
2014/03/12 职场文书
大学生职业生涯规划书
2014/03/14 职场文书
党支部公开承诺践诺书
2014/03/28 职场文书
大学生标准自荐书
2014/06/15 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python