You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么node_modules用下划线而package-lock.json用连字符?

你提到的两个由npm install命令生成的文件命名差异,并非设计上的不统一,而是npm版本迭代过程中针对不同场景做的功能区分:

  • npm v5 之前,官方只提供手动执行npm shrinkwrap生成的npm-shrinkwrap.json作为依赖锁定文件,作用是固定项目全链路依赖的版本号,避免不同环境安装依赖时出现版本差异
  • npm v5 版本上线后,为了降低用户使用门槛,默认在执行npm install时自动生成依赖锁定文件,命名为package-lock.json,核心功能和npm-shrinkwrap.json完全一致
  • 二者的唯一差异是适用场景不同:npm-shrinkwrap.json允许被发布到npm公共仓库,多用于需要强制锁定依赖版本的公共库项目;package-lock.json默认不会被发布到仓库,仅用于本地项目开发时的依赖版本锁定。

内容的提问来源于stack exchange,提问作者ZYinMD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:27:04