包管理工具

49 阅读2分钟

NPM 包的版本

semver 版本规范 X.Y.Z

  • X 主版本号:当有不兼容的 API 修改
  • Y 次版本号:做了向下兼容的功能性新增
  • X 修订号:做了向下兼容的问题修正
  • x.y.z:表示一个明确的版本号
  • ^x.y.z:表示x不变,y和z永远安装最新版本
  • ~x.y.z:表示x和y不变,z永远安装最新版本

npm 发包

  • 注册账号:www.npmjs.com/
  • 命令行登录:npm login
  • 修改 package.json
  • 发布到 npm registry:npm publish

文件拷贝、硬链接、软链接

  • 拷贝: QQ截图20240503105658.png
  • 硬链接: QQ截图20240503105826.png foo.js 和 foo_hard.js 和磁盘中的 data 之间的链接是硬链接。删除 foo.js 或者 foo_hard.js 其中的一个,另外一个还可以访问文件,在其中一个文件中修改内容,另外一个文件中也能看到修改之后的内容。
  • 软链接: QQ截图20240503110240.png 相当于快捷方式,在符号链接的文件中放有真实文件的目录,真实文件和磁盘文件是硬链接。如果删除了磁盘中的文件,通过软链接就不能找到原文件了。

pnpm 和 npm、yarn 区别

使用 npm 和 yarn 时,如果有 100 个项目,每一个项目都有一个相同的依赖包,则会在硬盘上保存 100 份相同依赖包的副本,相当于 文件拷贝

如果使用 pnpm ,依赖包会被存放在一个统一的位置,
如果对同一个依赖包使用相同的版本,磁盘只有这个依赖包的一份文件。
如果对同一个依赖包使用不同的版本,则只有版本之间不同的文件会被存储起来。所有文件都保存在硬盘的统一的位置。

pnpm 特点:

  • 如果已经通过 pnpm 下载过需要的第三方包了,第二个项目用到这个包的时候,就不用再次下载,直接和之前下载的文件建立硬链接。加快项目下载速度。
  • 节省磁盘空间,同一个版本的同一个包,在磁盘中只会存储一份。不同版本的同一个包,只会保存不同的东西,相同的东西只会保存一份。
  • 创建非扁平的 node_modules,扁平的优点(下载第一个包的时候,会下载一些依赖包,如果下载别的包的依赖包,刚好在别的依赖包中就不需要再次下载了)扁平的缺点(可以在项目中直接引用包的依赖包,即使这些包不在package.json中)
  • pnpm是这么处理的 image.png

QQ截图20240503113432.png

QQ截图20240503113120.png

pnpm 创建非扁平 node_modules 目录

QQ截图20240503113632.png