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
文件拷贝、硬链接、软链接
- 拷贝:

- 硬链接:
foo.js 和 foo_hard.js 和磁盘中的 data 之间的链接是硬链接。删除 foo.js 或者 foo_hard.js 其中的一个,另外一个还可以访问文件,在其中一个文件中修改内容,另外一个文件中也能看到修改之后的内容。 - 软链接:
相当于快捷方式,在符号链接的文件中放有真实文件的目录,真实文件和磁盘文件是硬链接。如果删除了磁盘中的文件,通过软链接就不能找到原文件了。
pnpm 和 npm、yarn 区别
使用 npm 和 yarn 时,如果有 100 个项目,每一个项目都有一个相同的依赖包,则会在硬盘上保存 100 份相同依赖包的副本,相当于 文件拷贝。
如果使用 pnpm ,依赖包会被存放在一个统一的位置,
如果对同一个依赖包使用相同的版本,磁盘只有这个依赖包的一份文件。
如果对同一个依赖包使用不同的版本,则只有版本之间不同的文件会被存储起来。所有文件都保存在硬盘的统一的位置。
pnpm 特点:
- 如果已经通过 pnpm 下载过需要的第三方包了,第二个项目用到这个包的时候,就不用再次下载,直接和之前下载的文件建立硬链接。加快项目下载速度。
- 节省磁盘空间,同一个版本的同一个包,在磁盘中只会存储一份。不同版本的同一个包,只会保存不同的东西,相同的东西只会保存一份。
- 创建非扁平的 node_modules,扁平的优点(下载第一个包的时候,会下载一些依赖包,如果下载别的包的依赖包,刚好在别的依赖包中就不需要再次下载了)扁平的缺点(可以在项目中直接引用包的依赖包,即使这些包不在package.json中)
- pnpm是这么处理的


pnpm 创建非扁平 node_modules 目录
