package.json和package-lock.json的区别

news2024/10/7 12:28:30

前言

今天正在写代码,同学突然问我,package.jsonpackage-lock.json有什么区别,这两个文件有什么用?我愣住了…

模块化开发

经过这么多年的发展,现在的前端开发基本上都是模块化开发了。而nodenpm则可以很方便的管理项目所依赖的模块。我们在使用npm init初始化项目的时候就会生成一个package.json文件,package.json用来描述项目及项目所依赖的模块信息。

package.json

This document is all you need to know about what’s required in your package.json file. It must be actual JSON, not just a JavaScript object literal.

A lot of the behavior described in this document is affected by the config settings described in config.

翻译过来就是:本文档是您需要了解 package.json 文件中所需内容的全部内容。它必须是实际的 JSON,而不仅仅是 JavaScript 对象文字。本文档中描述的许多行为都受 config 中描述的配置设置的影响。

package.json记录了项目的配置信息,包括名称、版本、许可证等数据,也会记录所需的各种模块,包括 执行依赖,和开发依赖,以及scripts字段。

package-lock.json

关于package-lock.json的官方解释如下:

package-lock.json is automatically generated for any operations where npm modifies either the node_modules tree, or package.json. It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates.

翻译过来就是:对于npm修改node_modulespackage.json的任何操作,都会自动生成package-lock.json。它准确的描述了当前项目npm包的依赖树,以便在后续的安装中能够生成相同的树,而不管中间依赖项如何更新。

用人话就是,package-lock.json对整个依赖树进行版本固定的,package-lock.json会记录各个模块的版本信息和下载路径。这样,在任何时候,我们再对项目进行npm install的时候,npm发现如果项目中有package-lock.json文件,就会根据package-lock.json里的内容来处理和安装依赖而不再根据package.json

"dependencies": {
 "react": "^16.8.0",
} 

package.json文件只能锁定大版本,即版本号的第一位,并不能锁定后面的小版本,如果没有package-lock.json,每次npm install都是拉取的该大版本下的最新的版本。比如上面的react16.8.0版本,假如有了最新版16.8.1,如果没有package-lock.json,在npm install的时候,就会自动更新为16.8.1。很多时候,为了项目的稳定性,我们一般不会随意升级依赖包,因此使用package-lock.json文件,当你每次安装一个依赖的时候就锁定在你安装的这个版本,不会升级依赖包。

最后

最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/154349.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电网调频及一次调频、二次调频

电网调频的基本概念电力系统运行的主要任务之一是对电网频率进行控制—控制电网频率在50Hz附近的一个允许范围内。电网频率偏离额定值50Hz的原因是能源侧(水电、火电、核电……)的供电功率与负荷侧的用电功率之间的平衡被破坏而引起的。负荷的用电功率是…

Sentinel热点参数限流

何为热点? 何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K数据,并对其访问进行限制。比如: 1)商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制&am…

正确的清理内存方式,才能让你的空间更加充裕

我们的手机用了一段时间后,有没有感觉卡变了,运行速度也很慢?估计是手机内存不足造成的,今天就来教教大家如何快速清理空间。方法一:清除微信缓存文件 我们每天都用微信。 其实它最占内存,我们还需要定时打…

原子化带来化学反应,视频号万粉创作者增加3倍,点赞10w+的爆款内容增长186%

1月10日,以“在场”为主题的2023微信公开课PRO正式开讲。本年度微信公开课重点从视频号内容生态发展、微信生态内各类产品助力实体转型以及数字生活服务升级三个方面,展示微信生态各产品的新能力、新计划。在2022年的微信公开课Pro上,“视频号…

广告业务系统 之 数据中转站 —— “日志中心-实时服务监控”

文章目录广告业务系统 之 数据中转站 —— “日志中心-实时服务监控”日志中心实时服务监控 —— 前链路日志分析日志收敛手段 —— “手术开口”基于 metrics 的日志分析 —— Prometheus & Graphite监控服务是怎么监控自身 & 比常规服务更坚强高扩展、高性能的架构设…

[L1 - 5分合集]心理阴影面积

L1-060 心理阴影面积 分数 5 作者 陈越 单位 浙江大学 题目: 这是一幅心理阴影面积图。我们都以为自己可以匀速前进(图中蓝色直线),而拖延症晚期的我们往往执行的是最后时刻的疯狂赶工(图中的红色折线)。由…

外贸邮件营销的优势

邮件营销相对于其他营销方式,历史更悠久。邮件营销具有成本低廉、快速、精准的特点。那么邮件营销有哪些优势,才能获得如此的关注。接下来,米贸搜和大家分享一下邮件营销的优势。1.节约成本的考虑:当前,世界经济复苏乏力&#xff…

Kafka消息队列使用及原理

消息队列作用:异步、削峰、解耦 1、kafka简介 ​ Apache Kafka 是一个分布式的流平台,有三个关键的功能: 能够发布(写入)和订阅(读取)事件流持续可靠的存储事件流在事件发生时回顾性的处理事件…

IB生物笔记:Structure and function of organelles

国际学校生物老师解读IB生物,感兴趣的同学记得收藏哦~IB生物分为SL(standard level)和HL(higher level)SL有6个topic∶细胞生物,分子生物,遗传学,生态学,物种进化以及多样性和人体生理。HL除了上述6个topic外还要加上∶…

C++模板类

目录 前言 类模板 模板类继承 前言 随着c发展,有一部分代码就会出现这样的情况:实现的内容相同,但是参数不同。模板类就是为解决这类情况来的,是一种泛型编码。即与数据类型无关的通用程序设计技术。 模板类本身不占空间&…

C语言模块化

🌞欢迎来到C语言的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 🙏作者水平很有限,如果发现错误,…

MySQL的行锁总结

文章目录前言一、行锁的介绍二、行锁的使用三、使用行锁所带来的问题四、死锁和死锁检测前言 上篇文章已经学习了MySQL的全局锁和表锁,今天这篇文章我们对行锁进行以下学习 一、行锁的介绍 行锁就是针对数据表中行记录的锁,比如事务A更新了一行&#x…

切面AOP

1.2 AOP体系与概念 简单地去理解,其实AOP要做三类事: 在哪里切入,也就是权限校验等非业务操作在哪些业务代码中执行。 在什么时候切入,是业务代码执行前还是执行后。 切入后做什么事,比如做权限校验、日志记录等。 因…

ES索引切分

提示:对于一些日志类的数据,我们常用到es作为存储,数据量过大时,可能会用到索引切分,这里可以参考 ES索引切分前言方案一:ES索引切分验证(policy策略)配置ilm策略 (max_d…

照片如何修复清晰度?这些修复方法值得你收藏

我们都知道以前的拍照技术落后,拍摄出来的照片像素都比较低,从而导致照片有些模糊不清,再加上我们保存不当,很多旧照片都变得模糊破损,因此很多人为了不让这些旧照片消失,都会选择找人来修复这些旧照片&…

爬虫 大规模数据 采集心得和示例

本篇主要介绍网站数据很是大的采集心得数据库1. 什么样的数据才能称为数据量大:编程我以为这个可能会由于每一个人的理解不太同样,给出的定义 也不相同。我认为定义一个采集网站的数据大小,不单单要看这个网站包括的数据量的大小,…

MySQL高级【锁】

1:锁的概述锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、 RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有 效性是所有数据库必…

基于java springmvc+mybatis酒水商城管理系统设计和实现

基于java springmvcmybatis酒水商城管理系统设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取…

5.7、TCP 可靠传输的实现

1、TCP基于以字节为单位的滑动窗口来实现可靠传输 TCP 基于以字节为单位的滑动窗口\color{red}以字节为单位的滑动窗口以字节为单位的滑动窗口来实现可靠传输 如下所示,假定数据传输只在一个方向进行 这是发送方待发送字节的序号 假设发送方收到了来自一个接收方的…

RHCE第六天之DNS域名解析服务器详解

文章目录一、 域名解析服务器介绍二、DNS域名解析的过程三、搭建DNS服务器的详细配置四、实验练习一、 域名解析服务器介绍 DNS(Domain Name System) 是互联网上的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够…