package.json相关疑惑总结
语义版本控制(node-semver)
X.Y.Z,主要版本X,次要版本Y,补丁Z
X:代表一个破坏兼容性的大变化;
Y:表示不会破坏任何内容的新功能;
Z:表示不会破坏任何内容的错误修复;
package.json中版本控制
"express":"^4.15.4"——表示至少应该使用版本4.15.4,但任何高于此版本的版本都可以,只要它们具有相同的主要版本(4.x.x)。PS:如果大版本号为0,则^与~相同,因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。
"express":"~4.15.4"——表示安装时不能改变主要版本和次要版本号(4.15.x)。
"express":"4.15.4"——表示安装的指定版本号(4.15.4)。
"express":"latest"——表示安装最新版本。
package-lock.json(npm 5.x.x新增,可禁用)优先级迭代
npm 5.0.x:不管package.json怎么变,npm install 时都会根据package-lock.json文件下载;
npm 5.1.x:npm install 会无视package-lock.json文件,去下载最新的包;
npm 5.4.2后:如果改了package.json,且package.json和package-lock.json文件不同,那么npm install 时npm会根据package中的版本号以及语义含义去下载最新的包,并更新至lock。如果两者是同一状态,那么npm install 都会根据lock下载,不会理会package实际包的版本是否有更新。
package-lock.json中各参数含义
"@hui-pro/empty": { "version": "1.1.0", "resolved": "http://...", "integrity": "sha1-D2egR6O4AeJh31PAr0KIyJJsciQ=", "requires": { "@hui-pro/locale": "^1.1.0", "@hui-pro/theme": "^1.1.0", "@hui-pro/utils": "^1.1.0" }, "dependencies": { "@hui-pro/locale": { "version": "1.1.0", "resolved": "http://...", "integrity": "sha1-ZzHcgwh/q5CqslQadrXzhzQc7vQ=", "requires": { "deepmerge": "^1.5.2" } }, "@hui-pro/theme": { "version": "1.1.0", "resolved": "http://...", "integrity": "sha1-+buQbn8OnWU32dIdNg6v9g6cUrU=", "requires": { "sass": "^1.19.0", "sass-loader": "^7.1.0" } }, "@hui-pro/utils": { "version": "1.1.0", "resolved": "http://...", "integrity": "sha1-V862xMe+H5G751C3CpT3bGIFr1k=", "requires": { "h-jsencrypt": "^1.0.1", "moment": "^2.24.0", "qs": "^6.5.2", "resize-observer-polyfill": "^1.5.1" } } } }
version:应安装的特定版本;
resolved:模块的位置(URI);
integrity:验证模块完整性的哈希;
requires:它依赖的包列表;
dependencies:依赖包详情列表;
参考资料
https://segmentfault.com/a/1190000017239545
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构