为什么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
相关产品推荐
相关产品推荐

