当前位置: 首页 > news >正文

node 第十二天 npm补充 详解package-lock.json在团队协作中的作用

1.npm 是Node的开放式模块登记和管理系统,是Node.js包的标准发布平台,用于Node.js包的发布、传播、依赖控制

2.今天主要说的是package-lock.json在团队协作中的作用(yarn.lock也是一样), 其实在npm@5之后和yarn的区别已经很小了
正常项目用哪个都行, 几乎可以在每个阶段无缝切换

3. package-lock.json 是否应该提交到版本库, 无论是yarn官方还是npm官方都认为应该提交到版本库, 用来保证团队每个开发者的依赖一致性,那么package-lock.json是如何保证团队依赖一致性的, 下面会说明

4. 三个常见的npm语义化版本

  2.1.0   必须是2.1.0^2.1.0   限定大版本,后面更新不能超过主版本2~2.1.0   限定前两个版本,后面更新不能超过主版本2和次版本1

5.我初始化项目中package.json依赖信息如下

  "devDependencies": {"sass": "^1.68.4"},

执行npm install
在我的仓库下生成了node_modulespackage-lock.json
对于项目初始化我需要用到sass, 我的本意是安装主版本号为1的sass依赖, 后两个版本尽可能新的给我安装, 此时npm源上的sass包最新的版本就是1.68.4, 那么我安转的sass肯定是1.68.4, 生成package-lock.json信息如下

"sass": {"version": "1.68.4","resolved": "https://registry.npmmirror.com/sass/-/sass-1.68.4.tgz","integrity": "sha512-X99+a2iGdXkdWn1akFPs0ZmelUzyAQfvqYc2P/MPTrJRuIRoTffGzT9W9nFqG00S+c8hXzVmgxhUuHFdrwxkhQ==","requires": {"chokidar": ">=3.0.0 <4.0.0","immutable": "^4.0.0","source-map-js": ">=0.6.2 <2.0.0"}}

6.锁定后续团队成员安装的依赖版本
之后只要我把package-lock.json提交到版本库, 下一位团队成员拉取代码后, 执行npm install那么他安装的sass依赖版本就是已经被我锁定的1.68.4
哪怕他拉取的时候sass的作者已经把1.69.4发布到npm, 他下载的依赖依然和我初始化项目下载的依赖一样, 因为我锁定了依赖版本, 这有利于团队成员开发依赖一致性
反之, 如果我没有把package-lock.json提交到版本库, 那么后续拉取代码安装依赖的团队成员就会根据package.json的版本规则去尽可能新的安装依赖, 这可能导致一些意想不到的问题, 因为大家的依赖版本不一致了

7.有了package-lock.json文件, 我们应该如何更新依赖
根据上面说的难道以后我们都不能更新依赖, 使用包的新特性了吗? 当然不是, 不过更新依赖应该规范起来
这里提供一个流程

1.某位团队成员 使用 npm update 更新依赖(或者直接修改package.json里面的依赖版本), 如果npm源有新的符合语义化版本的依赖可用, 那么这位成员的package-lock.json肯定会变化,
++
tip: 如果使用npm update命令更新依赖, 最后找到更新后的依赖的版本, 你可以手动修改到package.json, 因为package.json只能手动操作, 这样做的目的是方便及时方便的查看依赖版本, 比如1.68.4更新到了1.69.4 你应该把package.json里面的^1.68.4手动改为^1.69.4
(这一步看个人喜好, 不是那么重要还可能会手动出错~~~)
++
2.这位成员把package-lock.jsonpackage.json提交到仓库
++
3.通知其它成员, 拉取package-lock.jsonpackage.json进行npm install更新各自的依赖, 保持团队依赖一致性.

8.本地隐藏锁文件 官方叫法: Hidden Lockfiles

原话翻译

为了避免node_modules重复处理文件夹,从npm v7 开始,npm 使用node_modules/.package-lock.json. node_modules它包含有关树的信息,并且在满足以下条件的情况下用于代替读取整个层次结构:

这个node_modules/.package-lock.json文件和版本的锁定关系测试如下
有一种情况:
你把本地的package-lock.json删掉, 但是保存着node_modules, 那么你在npm install的时候node_modules/.package-lock.json会起到和package-lock.json一样的作用
这种情况直接不用去注意, 因为没人会把node_modules提到代码仓库而不把package-lock.json提上去, 这TM~
fun:-)

相关文章:

node 第十二天 npm补充 详解package-lock.json在团队协作中的作用

1.npm 是Node的开放式模块登记和管理系统&#xff0c;是Node.js包的标准发布平台&#xff0c;用于Node.js包的发布、传播、依赖控制 2.今天主要说的是package-lock.json在团队协作中的作用(yarn.lock也是一样), 其实在npm5之后和yarn的区别已经很小了 正常项目用哪个都行, 几乎…...

解决Visual studio 未能正确加载...包问题

问题 解决&#xff1a; 菜单: Visual Studio 2019 -> 输入"devenv /resetsettings " 将之前的设置恢复到原始状态。且可以正常使用。理论应该可以使用到其它版本中……...

Baumer工业相机堡盟工业相机如何使用BGAPISDK生成视频(C++)

Baumer工业相机 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机&#xff0c;可用于各种应用场景&#xff0c;如物体检测、计数和识别、运动分析和图像处理 Baumer的万兆网相机拥有出色的图像处理性能&#xff0c;可以实时传输高分辨率图像。此外&#xff0c;该相机还…...

CentOS 搭建本地 yum 源方式 安装 httpd 服务

CentOS 搭建本地 yum 源方式 安装 httpd 服务 修改 yum 源 挂载光驱 mkdir -p /mnt/cdrom mount /dev/cdrom /mnt/cdromvi /etc/fstab追加以下内容&#xff1a; /dev/cdrom /mnt/cdrom iso9660 defaults 0 0手动修改CentOS-Base.repo 备份 yum 源配置文件 mv /etc/yum.re…...

第二篇 渲染框架2.x

简介 整个渲染框架主要包含&#xff1a;用于控制场景中所有渲染节点的渲染状态的流程的RenderFlow。更新渲染数据、写入Buffer的Assembler。暂存数据的RenderData。数据缓冲区的MeshBuffer、quadBuffer、spineBuffer。包含着色器程序和渲染技术的Material。渲染指令数据的装载…...

k8s-----25、资源调度-ResourceQuota资源配额、资源限制limitrange、服务质量QoS

1、ResourceQuota资源配额 1.0 作用 命名空间资源配额。防止公司内部人员对资源的不合理利用。 1.1、为什么需要资源配额 1、作为k8s集群的管理员&#xff0c;知道集群的规模&#xff0c;会合理规划资源&#xff0c;但是使用侧不知道&#xff0c;会导致很多不合理的使用场景…...

Pytorch使用torchvision.datasets.ImageFolder读取数据集,数据集的内容排列状况

当使用torchvision.datasets.ImageFolder读取猫狗数据集时,dataset中存的图片是 猫狗猫狗猫狗猫狗 还是 猫猫猫猫狗狗狗狗 呢? 数据集文件的存放路径如下图 测试代码如下 import torch import torchvisiontransform torchvision.transforms.Compose([torchvision.transform…...

uni-app:引用文件的方法

绝对定位 ①import common from "/utils/common.js" ②import common from "utils/common.js" <template><view></view> </template> <script>import common from "/utils/common.js"export default {data() {ret…...

软件测试必备:如何编写测试用例?

前言 今天想和大家来聊聊测试用例&#xff0c;这篇文章主要是想要写给软件测试小伙伴们的&#xff0c;因为我发现还是有很多小伙伴在遇到写测试用例的时候无从下手&#xff0c;我就想和大家简单的聊聊&#xff0c;这篇文章主要是针对功能测试的哟。 同时&#xff0c;我也准备…...

windows安装数据库MySQL

windows安装数据库MySQL 文章目录 windows安装数据库MySQL一、MySQL官网下载压缩包二、在D盘新建文件夹D:\MySQL&#xff0c;将下载的压缩包解压到该文件夹下三、配置环境变量四、通过命令行模式安装、启用、配置SQL服务 一、MySQL官网下载压缩包 下载地址&#xff1a;https:/…...

2023CCF中国开源大会 | 麒麟信安作为首批合作伙伴入驻全国信创开源广场

聚开源各界群智&#xff0c;于湘江之滨论道。10月21-22日&#xff0c;以“开源联合&#xff0c;聚力共赢”为主题的2023 CCF中国开源大会&#xff08;CCF ChinaOSC&#xff09;在长沙隆重召开。本届大会由中国计算机学会、开放原子开源基金会主办&#xff0c;中国工程院院士、鹏…...

python网络爬虫实例

目录 1、访问百度 2、输入单词百度翻译 3、豆瓣电影排行榜 4、豆瓣电影top250 5、下载美女壁纸 1、访问百度 from urllib.request import urlopen url"http://www.baidu.com" respurlopen(url)with open("mybaidu.html",mode"w") as f:f.wr…...

ArcGIS中如何为跨带数据投影?

北京54、西安80高斯克吕格投影是我国常用的投影坐标系统,它们是一种分带投影方式,有3和6分带,不适合大范围内的投影使用。但是如果有份数据范围较大,跨越了多个度带,该选择哪个坐标系统进行投影转换呢? 在大范围内,常用的坐标系统有Albers等面积投影和Lambert等角投影,…...

如何在Ubuntu中安装libevent库

我自己在ubuntu 22 和20上都安装成功了。应该是每个版本都适合的。 我主要是整合参考这两个人的。 Ubuntu安装及测试Libevent_如何查看ubuntu是否安装了libevent-CSDN博客 【精选】Linux Ubuntu 20.04LTS安装OpenSSL步骤_ubuntu安装openssl-CSDN博客 下载方法一&#xff1a…...

领域高口碑 | 中科院1区TOP,Elsevier出版社,仅1个月Accept!稳定检索40年!

【SciencePub学术】本期&#xff0c;小编给大家推荐的是一本Elsevier旗下、稳定检索40年、影响因子为10.0的中科院1区TOP刊&#xff0c;期刊详情及专题信息如下&#xff1a; 期刊简介 COMPUTERS IN INDUSTRY ISSN&#xff1a;0166-3615 E-ISSN&#xff1a;1872-6194 IF&a…...

RDBMS 的历史回顾

“数据库”这个词是怎么来的&#xff1f;当 SQL 是 SEQUEL 时它代表什么&#xff1f;通过这篇有关 RDBMS 历史的文章了解所有这些内容以及更多内容。 埃里克迪特里希用户头像 经过 埃里克迪特里希 核心 Anush Gasparyan 用户头像 经过 阿努什加斯帕里安 2017年7月21日 意见…...

windows 离线安装 vue 环境

由于公司要求在内网开发项目&#xff0c;而内网不能连接外网&#xff0c;因此只能离线安装 vue 环境&#xff0c;在网上找过很多的离线安装方法&#xff0c;但都没有成功&#xff0c;于是在不断的尝试中找到了以下方法。 1、找一台与内网电脑相同系统的有网电脑。 2、在有网的电…...

python实现批量pdf转txt和word

文章目录 背景需求环境安装完整代码效果 背景需求 已经获取到了大量的pdf在download文件夹中&#xff0c;但是我需要的是txt文件和word文件&#xff5e; 环境安装 pip install pdf2docx pdfminer.six完整代码 # pip install pdf2docx pdfminer.siximport os from pdf2docx …...

c++ 并发与多线程(12)线程安全的单例模式-2

一、内部静态变量的懒汉单例(C++11 线程安全) #include <iostream> #include <thread> #include <vector>class Single { public:// 获取单实例对象static Single& GetInstance();// 打印实例地址void Print();private:// 私有构造函数,防止外部创建对…...

银河麒麟v10x86或者arm离线安装服务

银河麒麟v10x86或者arm离线安装服务 最近有个项目&#xff0c;甲方的服务器用的全是国产化服务器银河麒麟&#xff0c;架构是x86的然后也无法连接外网&#xff0c;需要离线安装服务正常思路就是找到离线安装的包&#xff0c;然后拷贝到现场的服务器中进行安装所以问题就在于如…...

【Ansible自动化运维工具 1】Ansible常用模块详解(附各模块应用实例和Ansible环境安装部署)

Ansible常用模块 一、Ansible1.1 简介1.2 工作原理1.3 Ansible的特性1.3.1 特性一&#xff1a;Agentless&#xff0c;即无Agent的存在1.3.2 特性二&#xff1a;幂等性 1.4 Ansible的基本组件 二、Ansible环境安装部署2.1 安装ansible2.2 查看基本信息2.3 配置远程主机清单 三、…...

Telegram 引入了国产小程序容器技术

Telegram 宣布为其开发者提供了一项“能够在 App 中运行迷你应用”的新功能&#xff08; 迷你应用即 Mini App&#xff0c;下文中以“小程序”代替&#xff09;。 在一篇博客文章中&#xff0c;Telegram 的开发者写到“小程序提供了可替代互联网网站的灵活界面&#xff08;cre…...

Capture One Pro 23图像处理工具「Mac」

Capture One Pro是一款专业的图像处理软件&#xff0c;旨在为摄影师和其他专业用户提供最佳的图像编辑和后期处理工具。 Capture One Pro 的主要功能包括 RAW 文件处理、图像编辑、颜色校正、曝光控制、局部调整、批处理等。它的相机支持列表非常广泛&#xff0c;几乎可以支持…...

rust OJ实战

目录 力扣 414. 第三大的数 力扣 628. 三个数的最大乘积 力扣 414. 第三大的数 给你一个非空数组&#xff0c;返回此数组中 第三大的数 。如果不存在&#xff0c;则返回数组中最大的数。 示例 1&#xff1a; 输入&#xff1a;[3, 2, 1] 输出&#xff1a;1 解释&#xff1a;…...

聊聊KafkaListener的实现机制

序 本文只要研究一下KafkaListener的实现机制 KafkaListener org/springframework/kafka/annotation/KafkaListener.java Target({ ElementType.TYPE, ElementType.METHOD, ElementType.ANNOTATION_TYPE }) Retention(RetentionPolicy.RUNTIME) MessageMapping Documented …...

Golang洗牌算法(Golang乱序算法)

Golang 洗牌算法&#xff08;乱序算法&#xff09;&#xff1b;需求背景&#xff1a;从一个文件下下读取所有文件&#xff0c;获取他们的名字&#xff0c; 将名字乱序排序&#xff0c;按着乱序后的序列&#xff0c;通过名字去找到文件&#xff0c;再上传&#xff0c;以达到上传…...

SpringBoot 源码分析(三) 监听器分析以及属性文件加载分析

前言 在创建SpringBoot项目的时候会在对应的application.properties或者application.yml文件中添加对应的属性信息&#xff0c;这些属性文件是什么时候被加载的&#xff1f;如果要实现自定义的属性文件怎么来实现&#xff1f;在讲属性加载之前先讲下监听器分析。 一、监听器分…...

记录nvm use node.js版本失败,出现报错: exit status 1: ��û���㹻��Ȩ��ִ�д˲�����

使用管理员权限运行cmd&#xff0c;再使用nvm use node.js版本号 参考&#xff1a; nvm use (node版本号)时报错&#xff1a; exit status 1: &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;㹻&#xfffd;&#xfffd;Ȩ&#xfffd;&#xfffd;ִ&#xf…...

【蓝牙协议】简介:蓝牙芯片、蓝牙协议架构

文章目录 蓝牙芯片架构另一个视角由下到上看&#xff1a;Controller-->Host由上到下看&#xff1a;Host-->Controller 蓝牙协议架构视角HW层——蓝牙芯片层Transport——数据传输层HOST——协议层 总结 参考&#xff1a;https://zhuanlan.zhihu.com/p/585248998 参考&…...

【深度学习】

什么是深度学习&#xff1f; 感知器 为了实现模拟人类的学习&#xff0c;科学家们首先设计了构成神经网络的基本结构神经元&#xff08;感知器模型&#xff09;&#xff0c;然后再由大量的神经元构成复杂的&#xff0c;能够实现各种功能的神经网络。 这种模式和超能陆战队中的…...