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 相关文章推荐
jquery插件制作 提示框插件实现代码
Aug 17 Javascript
jQuery和AngularJS的区别浅析
Jan 29 Javascript
jquery通过name属性取值的简单实现方法
Jun 20 Javascript
JavaScript中cookie工具函数封装的示例代码
Oct 11 Javascript
浅析Jquery操作select
Dec 13 Javascript
很棒的vue弹窗组件
May 24 Javascript
在Vue.js中使用Mixins的方法
Sep 12 Javascript
Vue代码分割懒加载的实现方法
Nov 23 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
Nov 26 Javascript
vue中多路由表头吸顶实现的几种布局方式
Apr 12 Javascript
jQuery实现简易QQ聊天框
Feb 10 jQuery
vue中是怎样监听数组变化的
Oct 24 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
mysql limit查询优化分析
2008/11/12 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
PHP count()函数讲解
2019/02/03 PHP
laravel 框架执行流程与原理简单分析
2020/02/01 PHP
javascript获取当前ip的代码
2009/05/10 Javascript
jquery tools 系列 scrollable学习
2009/09/06 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
javascript的事件触发器介绍的实现
2014/06/05 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
2016/12/12 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
基于vue的fullpage.js单页滚动插件
2017/03/20 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
Vue双向数据绑定(MVVM)的原理
2020/10/03 Javascript
Python函数嵌套实例
2014/09/23 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
Python单例模式的两种实现方法
2017/08/14 Python
Python 实现一行输入多个值的方法
2018/04/21 Python
Django框架会话技术实例分析【Cookie与Session】
2019/05/24 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
2019/05/27 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
2014年校务公开工作总结
2014/12/18 职场文书
2015年维修工作总结
2015/04/25 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
财产分割协议书
2016/03/22 职场文书
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS