前端工程化-包管理NPM-package.json 和 package-lock.json 详解
package.json 和 package-lock.json 详解
1.package.json
基本概念
package.json 是 Node.js 项目的核心配置文件,它定义了项目的基本信息、依赖项、脚本命令等。
主要字段
-
基本信息字段
-
name
: 项目名称(必填) -
version
: 项目版本(必填,遵循语义化版本规范) 版本号形如:X.Y.Z
,有三部分组成,依次叫主版本号
、次版本号
、修订号
; -
description
: 项目描述 -
author
: 作者信息 -
license
: 开源许可证
-
-
依赖管理字段
-
dependencies
: 生产环境依赖 -
devDependencies
: 开发环境依赖 -
peerDependencies
: 同伴依赖 -
optionalDependencies
: 可选依赖
-
-
脚本字段
-
scripts
: 定义可以通过 npm run 执行的脚本命令
-
-
其他配置
-
main
: 项目入口文件 -
repository
: 代码仓库信息 -
keywords
: 关键词数组,用于 npm 搜索 -
engines
: 指定 Node.js 和 npm 的版本要求
-
示例
{"name": "my-project","version": "3.2.1","description": "A sample project","main": "index.js","scripts": {"start": "node index.js","test": "jest"},"dependencies": {"express": "^4.17.1"},"devDependencies": {"jest": "^26.6.3"} }
2.package-lock.json
基本概念
package-lock.json 是 npm 5+ 版本引入的文件,用于锁定依赖树的确切版本,确保不同环境下安装完全相同的依赖。
主要特点
-
自动生成:由 npm 自动创建和维护,使用
npm install
安装包后就会自动生成。 -
精确版本控制:记录每个依赖包的确切版本
-
依赖关系树:完整记录依赖树结构
-
安装优化:加快后续安装速度
文件作用
-
版本锁定:防止因语义化版本导致的意外升级
-
一致性保证:确保团队成员和 CI/CD 系统使用相同的依赖版本
-
安装效率:记录已解析的依赖树,避免重复计算
与 package.json 的关系
-
package.json 定义的是版本范围
-
package-lock.json 记录的是确切版本
-
当两者冲突时,以 package-lock.json 为准(npm 5+)
3.最佳实践
-
版本管理
-
将 package-lock.json 提交到版本控制系统
-
不要手动修改 package-lock.json
-
-
依赖安装
-
npm 安装包的方式分为本地安装和全局安装。安装使用npm install或简写形式npm i。
本地安装 -
使用
npm ci
命令(基于 package-lock.json 安装,用于生产环境) -
使用
npm install
<参数> <package-name> 命令(会更新 package-lock.json,用于开发环境) -
全局安装
npm i -g <package-name>npm i --global <package-name>
-
让安装的包放到对应依赖位置
开发依赖(devDependencies)中,传递参数 --save-dev 或 -D 即可。
生产依赖(dependencies)中,传递参数 --save 或 -S 即可。
不想放在开发依赖也不想放在生产依赖,使用npm install --no-save。
注意:包默认安装到生产依赖(dependencies)中
线上环境,只需要安装dependencies中的包,使用npm install --prod命令。
-
删除包
-
npm uninstall <package-name>
// 简写形式
npm un <package-name> -
全局删除 npm uninstall -g <package-name>
-
-
-
更新依赖
-
使用
npm update
更新次要版本和补丁版本 -
使用
npm install package@version
更新主版本
-
-
安全考虑
-
定期运行
npm audit
检查安全漏洞 -
使用
npm audit fix
修复已知漏洞
-
4.常见问题
4.1: 为什么有时 node_modules 和 package-lock.json 会不一致?
通常是因为手动修改了 package.json 或在不同 npm 版本间切换导致的。可以删除 node_modules 和 package-lock.json 后重新安装。
4.2.可以删除 package-lock.json 吗?
不推荐,删除后会导致依赖版本不确定性,可能引入兼容性问题。
4.3. yarn.lock 和 package-lock.json 有什么区别?
两者功能类似,都是锁定依赖版本,只是格式不同。yarn.lock 是 Yarn 包管理工具生成的。
相关文章:
前端工程化-包管理NPM-package.json 和 package-lock.json 详解
package.json 和 package-lock.json 详解 1.package.json 基本概念 package.json 是 Node.js 项目的核心配置文件,它定义了项目的基本信息、依赖项、脚本命令等。 主要字段 基本信息字段 name: 项目名称(必填) version: 项目版本…...
如何在 Linux 中彻底终止被 `Ctrl+Z` 挂起的进程?
问题场景 在 Linux 终端操作时,你是否曾遇到过这样的情况? 当运行一个命令(如 ping www.baidu.com)时,不小心按下了 CtrlZ,屏幕上显示类似以下内容: ^Z [2] 已停止 ping www.b…...
人工智能100问☞第3问:深度学习的核心原理是什么?
目录 一、通俗解释 二、专业解析 三、权威参考 深度学习的核心原理是通过构建多层神经网络结构,逐层自动提取并组合数据特征,利用反向传播算法优化参数,从而实现对复杂数据的高层次抽象和精准预测。 一、通俗解释 深度学习的核心原理,就像是教计算机像婴儿…...
基于若依和elementui实现文件上传(导入Excel表)
基于若依和elementui实现文件上传(导入Excel表) 前端部分: 若依封装了Apache的poi功能,实现文件的上传和下载 若依使用的是JS语法,需要改造为JS语法才能使用 若依如何解决跨域的问题: 在前端的配置文件中…...
2025年第十六届蓝桥杯省赛真题解析 Java B组(简单经验分享)
之前一年拿了国二后,基本就没刷过题了,实力掉了好多,这次参赛只是为了学校的加分水水而已,希望能拿个省三吧 >_< 目录 1. 逃离高塔思路代码 2. 消失的蓝宝思路代码 3. 电池分组思路代码 4. 魔法科考试思路代码 5. 爆破思路…...
OpenHarmony人才认证证书
OpenHarmony人才认证体系目前支持初级工程师认证,要求了解OpenHarmony开源项目、生态进展及系统移植等基础知识,熟练掌握OpenHarmony的ArkUI、分布式软总线、分布式硬件、分布式数据管理等基础能力使用,具备基础的开发能力。 考试流程可参考O…...
Docker--利用dockerfile搭建mysql主从集群和redis集群
Docker镜像制作的命令 链接 Docker 镜像制作的注意事项 链接 搭建mysql主从集群 mysql主从同步的原理 MySQL主从同步(Replication)是一种实现数据冗余和高可用性的技术,通过将主数据库(Master)的变更操作同步到一个…...
LLaMA-Factory双卡4090微调DeepSeek-R1-Distill-Qwen-14B医学领域
unsloth单卡4090微调DeepSeek-R1-Distill-Qwen-14B医学领域后,跑通一下多卡微调。 1,准备2卡RTX 4090 2,准备数据集 医学领域 pip install -U huggingface_hub export HF_ENDPOINThttps://hf-mirror.com huggingface-cli download --resum…...
使用ZSH美化Windows系统Git Bash
此前,我们讲解了一种借助 Windows Subsystem for Linux(WSL)让用户在 Windows 操作系统中运用 Linux Shell 命令,进而高效地实现文件访问、编译等开发工作。 Windows系统命令行的最佳实践 | 听到微笑的博客 这种借助 Windows Su…...
如何使用PyCharm自动化测试
如何使用PyCharm自动化测试 1.打开PyCharm右击文件,点击新建项目 按照如图配置,然后点击创建 2.创建好后,点击文件,然后点击设置 按照如图步骤,查看selenium和webdriver-manager是否存在 3.以上都完成后按照如图创…...
56.评论日记
2025年4月12日22:06:08 小米事故下的众生相_哔哩哔哩_bilibili...
EMI滤波器和ESD保护等效参数汇总
EMI 共模抑制与ESD设计参考用,特别是工业和机器人,伺服器类产品,特别关注,提高产品稳定性 基带接口 通道数 线性小信号等效参数 数字端口时钟频率 备注 Rline Cline 电池反接 1 — 240Pf — 过压和电池反接保护 …...
java -jar与java -cp的区别
java -jar与java -cp 1、情景描述2、情景分析3、两者区别 通常情况下,我们会看到以下两种命令启动的Java程序: java -jar xxx.jar [args] java -cp xxx.jar mainclass [args]这两种用法有什么区别呢? 1、情景描述 1)Java打包单个…...
蓝桥杯嵌入式十五届模拟三(串口、双ADC)
一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码,在文件夹中添加code文件夹&#…...
04-算法打卡-数组-二分查找-leetcode(69)-第四天
1 题目地址 69. x 的平方根 - 力扣(LeetCode)69. x 的平方根 - 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内…...
SpringBoot项目:部门管理系统
文章目录 1、工程搭建1.1 创建项目1.2 创建数据库1.3 准备基础代码1.4 准备mapper接口1.5 准备service层1.6 准备controller层2、接口开发2.1 查询部门2.1.1 接口开发1、工程搭建 1.1 创建项目 主要内容: 创建Springboot工程引入web开发起步依赖、mybatis、mysql驱动、lombok…...
MyBatis-Plus 扩展功能
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 逻辑删除一、配置逻辑删除字段方式一:全局配置(推荐)方式二:实体类注解配置 二、逻辑删除流程三、完整代码示例1. 实…...
service和endpoints是如何关联的?
在Kubernetes中,Service 和 Endpoints 是两个密切关联的对象,它们共同实现了服务发现和负载均衡的功能。以下是它们之间的关联和工作原理: 1. Service 的定义 Service 是一种抽象,定义了一组逻辑上相关的 Pod,以及用…...
MyBatis-plus 快速入门
提示:MyBatis-Plus(MP)是一个 MyBatis的增强版 文章目录 前言使用MybatisPlus的基本步骤1、引入MybatisPlus依赖代替Mybatis依赖2、定义Mapper接口并继承BaseMapper他是怎么知道哪张表,哪些字段呢 3、实体类注解4、根据需要添加配…...
【PySpark大数据分析概述】03 PySpark大数据分析
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PySpark大数据分析与应用 ⌋ ⌋ ⌋ PySpark作为Apache Spark的Python API,融合Python易用性与Spark分布式计算能力,专为大规模数据处理设计。支持批处理、流计算、机器学习 (MLlib) 和图计算 (GraphX)&am…...
C# --- IEnumerable 和 IEnumerator
C# --- IEnumerable 和 IEnumerator IEnumerableIEnumeratorIEnumerable 和 IEnumerator 的作用手动实现 IEnumerableIEnumerable vs. IQueryable为什么有了ienumerator还需要ienumerable IEnumerable 在C#中,IEnumerable 是一个核心接口,用于表示一个可…...
Excel VBA 运行时错误1004’:方法‘Open’作用于对象‘Workbooks’时失败 的解决方法
使用Excel编写VBA脚本时出现如下错误: 运行时错误1004’: 方法‘Open’作用于对象‘Workbooks’时失败 我的功能是打开一系列excel文件从中自动复制数据到汇总excel的各个指定的sheet中,来源的excel是从网站上下载的。 出现这个问题后从网上查找各种办…...
03-算法打卡-数组-二分查找-leetcode(34)-第三天
1 题目地址 34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)34. 在排序数组中查找元素的第一个和最后一个位置 - 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置…...
利用python从零实现Byte Pair Encoding(BPE)
喜欢可以到我的主页订阅专栏哟(^U^)ノ~YO 第一章:自然语言处理与分词技术基础 1.1 自然语言处理的核心挑战 自然语言处理(Natural Language Processing, NLP)作为人工智能领域的重要分支,其核心目标是实现计算机对人类语言的理解与生成。在深度学习技术快速发展的今…...
Redis的分布式锁
Redis的分布式锁 一.分布式锁的简介二.分布式锁的实现1.基本实现2.引入过期时间3.引入校验ID4.引入Lua5.引入看门狗(watch dog)6.引入RedLock算法 一.分布式锁的简介 在一个分布式的系统中, 会涉及到多个节点访问一个公共资源的情况,此时就需要通过锁的…...
SpringBoot分布式项目中实现智能邮件提醒系统
一、应用场景与需求分析 在电商、OA、客服等系统中,邮件提醒是用户触达的重要方式。本文针对以下典型需求进行方案设计: 多类型支持:订单超时、服务到期、待办通知等场景动态内容:支持纯文本/HTML/模板引擎内容格式智能重发:24小时未处理自动升级提醒级别高可用性:分布式…...
LSTM-SVM长短期记忆神经网络结合支持向量机组合模型多特征分类预测/故障诊断,适合新手小白研究学习(Matlab完整源码和数据)
LSTM-SVM长短期记忆神经网络结合支持向量机组合模型多特征分类预测/故障诊断,适合新手小白研究学习(Matlab完整源码和数据) 目录 LSTM-SVM长短期记忆神经网络结合支持向量机组合模型多特征分类预测/故障诊断,适合新手小白研究学习…...
【图像处理基石】什么是抗锯齿(Anti-Aliasing)?
1. 抗锯齿的定义与作用 抗锯齿(Anti-Aliasing, AA)是一种用于消除数字图像中因采样不足导致的边缘锯齿现象的技术。锯齿(Jaggies)通常出现在高分辨率信号以低分辨率呈现时,例如3D图形渲染或图像缩放过程中。抗锯齿通过…...
C++曲线数据统一:如何高效插值并处理多条曲线的x值
在数据处理和科学计算中,我们经常会遇到需要对多条曲线进行统一x值处理的情况。例如,在实验数据记录中,不同传感器可能以不同的采样率记录数据,导致曲线的x值不一致。为了后续的分析和可视化,我们需要将这些曲线的x值统…...
训练模型的方式的两种方式:图像描述(Image Captioning)和对比学习(Contrastive Learning)原理及区别
图像描述(Image Captioning)和对比学习(Contrastive Learning)都是深度学习中用于训练模型的方式,但它们的目标、原理和实现方法都有很大不同。让我们分别看看它们的原理和区别。 1. 图像描述(Image Capti…...
数据结构:哈希表 | C++中的set与map
上回说到,红黑树是提升了动态数据集中频繁插入或删除操作的性能。而哈希表(Hash Table),则是解决了传统数组或链表查找数据必须要遍历的缺点。 哈希表 哈希表的特点就是能够让数据通过哈希函数存到表中,哈希函数能够将数据处理为表中位置的索…...
【unity游戏开发——Animator动画】Animator动画状态机复用——重写动画控制器 Animator Override Controller
注意:考虑到UGUI的内容比较多,我将UGUI的内容分开,并全部整合放在【unity游戏开发——Animator动画】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 一、状态机复用是什么?二、实战专栏推荐完结 一、状态机复…...
第九届 蓝桥杯 嵌入式 省赛
一、分析 1. LCD 显示 显示 存储位置、定时时间和当前状态存储位置:5个,来存储定时时间当前状态 定时器停止,Standby设置时间,Setting定时器运行,Runing定时器暂停,Pause 伪代码 LCD 显示 # 显示存储位…...
电流互感器的两相星形接线的建模与仿真
微♥“电击小子程高兴的MATLAB小屋”获取巨额优惠 1.模型简介 本仿真模型基于MATLAB/Simulink(版本MATLAB 2016Rb)软件。建议采用matlab2016 Rb及以上版本打开。(若需要其他版本可联系代为转换) 2.仿真模型 3.仿真结果 3.1一次…...
【征程 6】工具链 VP 示例中 Cmakelists 解读
1. 引言 在文章【征程 6】VP 简介与单算子实操中,介绍了 VP 是什么,并以单算子 rotate 为例,介绍了 VP API 使用方法。在【征程 6】工具链 VP 示例中日志打印解读 中介绍了 VP 单算子示例中用到的日志打印的头文件应该怎么写。接下来和大家一…...
制作像素风《饥荒》类游戏的整体蓝图和流程
游戏的制作过程和核心要素拆解成以下几个主要部分: 1. 核心概念与玩法设计 (蓝图构思) 游戏类型: 确定是纯粹的生存、带有冒险元素,还是有其他侧重?(比如更强的战斗、建造或剧情)核心循环: 玩家主要做什么࿱…...
Day22 -php开发01--留言板+知识点(超全局变量 文件包含 数据库操作 第三方插件)
环境要求:php7.0.9 小皮 navicat phpstorm24.1 知识点:会写(留言板 留言板后台) 超全局变量 三方插件的使用 文件包含 1、开启小皮并利用navicat新建一个数据库 注意:本地的服务mysql关闭后 才可打开小皮。属…...
履带小车+六轴机械臂(1)
基于单片机的可移动抓取机械手 采用的是一个履带底盘和六轴机械臂做的 已经实现的功能有:PS2手柄控制六个轴的舵机转动和控制两个直流减速电机的转动,以此来达到控制移动和抓取的目地,以及用手机APP连接蓝牙模块HC-05也能达到六个轴的舵机转…...
AI:深度学习之循环神经网络(RNN)
🔄 从零入门循环神经网络(RNN):原理详解+代码实战+未来展望 🚀 摘要:在人工智能蓬勃发展的当下,循环神经网络(Recurrent Neural Network, RNN)是处理序列数据的“记忆大师”🧠,正发挥着举足轻重的作用。从自然语言处理中的文本生成、机器翻译,到语音识别、时间…...
03-libVLC的视频播放器:控制(播放/暂停/停止/拖动条/声音)
libvlc_media_player_get_state(m_pMediaPlayer) 功能:获取当前媒体播放器的状态,返回值为libvlc_state_t枚举类型。常见状态值:libvlc_Playing:正在播放libvlc_Paused:已暂停libvlc_Stopped:已停止libvlc_Ended:播放结束libvlc_Error:发生错误注意事项:状态检测是异步…...
Python_仓库使用货拉拉物流运费计算1
仓库地址为广州 物料表里有各SKU的尺寸,长宽高 货拉拉收费明细表 根据订单的SKU的数量、尺寸、重量,去寻找最合适的货拉拉车型,并计算它所需的路费 import pandas as pd# 读取数据 df_111 pd.read_excel(订单明细表.xlsx) df_material …...
CATIA高效工作指南——常规配置篇(一)
一、CATIA无窗口启动优化 原理与实现 通过修改环境变量或启动参数,可禁用启动界面以提升加载速度。添加环境变量CATNOSTARTDOCUMENT1可跳过初始画面 进阶应用: 结合脚本实现静默启动:创建批处理文件(.bat)包含start …...
【AI提示词】金融信息抽取工程师工作流程
提示说明 专注于从金融行业的文本中提取关键信息,确保准确性和规范性。具备良好的文本处理能力和数据整理经验,能够处理复杂的信息结构。 提示词 # Role:金融信息抽取工程师## Background: 用户希望从金融行业的文本中严格提取…...
8、HTTPD服务--http协议介绍
目录 一、http协议 二、web服务 1、类型 2、cookie、session 三、HTTP协议特性 1、http/0.9 2、http/1.0 3、http/1.1 4、http/2 四、HTTP状态码、请求方法 1、状态码 2、请求方法 一、http协议 应用层协议作用 在客户端、web服务器传递数据 Hyper Text Transfer …...
React useEffect
在发送请求后执行代码 useEffect(副作用函数,依赖项数组) import { useEffect, useState } from "react";const URL http://geek.itheima.net/v1_0/channels function App() {// 创建状态数据const [list,setList] useState([])const [count,setCount] …...
部署Fish-Speech实现声音克隆及文本转语音
FishSpeech 是由Fish Audio团队开发的一款开源文本转语音(TTS)模型,支持多语言的语音合成和识别。它采用先进的深度学习技术,能够生成自然流畅的语音,并提供高质量的语音转文字功能。FishSpeech 支持声音克隆ÿ…...
Qt之OpenGL中的shader layout
layout一共有两种绑定方法。一种是把设定好的值绑定到shader中、另一种是shader中的layout绑定到代码中。 第一种方法(注意:要在link之前绑定同时要把shader代码中的layout设置删掉) void sunOpengl::initializeGL() {this->initializeO…...
【问题记录】记录2个安装Centos/Anolis系统卡死在安装包阶段的问题?(硬盘分区?换设备)
背景 问题就不详细记录了,本文记录的是Centos/Anolis安装中卡主的问题。这个问题遇到过几十次了,尝试过各种方法。最近一个偶然因素找到了原因。然后翻看历史上出现这个问题的照片居然是相同的地方卡死。。。 有点意思。特此记录,希望未来遇…...
用纯Qt实现GB28181协议/实时视频/云台控制/预置位/录像回放和下载/事件订阅/语音对讲
一、前言 在技术的长河中探索,有些目标一旦确立,便如同璀璨星辰,指引着我们不断前行。早在2014年,我心中就种下了用纯Qt实现GB28181协议的种子,如今回首,一晃十年已逝,好在整体框架和逻辑终于打…...
论文阅读笔记——Multi-Token Attention
MTA 论文 在 Transformer 中计算注意力权重时,仅依赖单个 Q 和 K 的相似度,无法有效捕捉多标记组合信息。(对于 A、B 两个词,单标记注意力需要分别计算两个词的注意力分数,再通过后处理定位共同出现的位置或通过多层隐…...