下表展示了 pnpm 、nvm 、 npx和npm之间的区别:
对比一
| 特性 | pnpm | nvm | npx | npm |
|---|---|---|---|---|
| 安装包管理器 | 是 | 否 | 否 | 是 |
| 版本管理器 | 是 | 是 | 否 | 否 |
| 包执行器 | 是 | 否 | 是 | 是 |
| 适用于 | Node.js | Node.js | 任何命令行工具 | Node.js |
| 安装包大小 | 小 | 无 | 无 | 大 |
| 安装速度 | 快 | 无 | 无 | 慢 |
| 包格式 | flat mode(扁平模式)和 nested mode(嵌套模式) | 未指定特定格式 | 未指定特定格式 | 嵌套模式(nested mode) |
| 版本兼容性管理 | 支持 | 支持 | 不支持 | 不支持 |
| 版本选择范围 | 大 | 大 | 小(仅限于当前已安装的包版本) | 小(仅限于当前已安装的包版本) |
| 版本切换速度 | 快 | 慢 | 快 | 快 |
| 默认情况下在用户空间中运行 | 是($HOME/.pnpm/store) | 是($HOME/.nvm) | 是($HOME/.cache/npx) | 是($HOME/.npm/registry) |
| 集成度高 | 高(支持 lockfile 和 package.json) | 中(支持 package.json) | 高(支持任何命令行工具) | 高(支持 lockfile 和 package.json) |
| 适合开发环境使用场景多样,可适应不同项目需求,特别是在项目启动时可以快速切换不同依赖项版本,减少等待时间。 | ✔️ | ✖️ | ✔️ | ✖️ |
| 适合生产环境使用场景多样,可适应不同项目需求,特别是在项目启动时可以快速切换不同依赖项版本,减少等待时间。 | ✔️ | ✖️ | ✖️ | ✖️ |
对比二
| 对比项 | pnpm | nvm | npx | npm |
|---|---|---|---|---|
| 含义 | pnpm是解决yarn、npm在多个项目安装同一个依赖时会下载重复文件的问题,避免磁盘的浪费,同时大大提升下载速度的包管理工具。 | nvm是Node.js版本管理工具,可以让你在同一台机器上安装和切换不同版本的Node.js。 | npx主要是用来调用项目内部安装的模块。 | npm是Node.js的包管理工具。 |
| 功能 | pnpm将依赖包存放在一个统一的位置,对同一依赖包使用相同的版本,磁盘上只有这个依赖包的一份文件;同一依赖包需要使用不同的版本,仅有版本之间不同的文件会被存储起来。当安装软件包时,其包含的所有文件都会硬链接到此位置,不会占用额外的硬盘空间。 | nvm可以让你在同一台机器上安装和切换不同版本的Node.js,解决不同版本之间存在的不兼容现象。 | npx可以帮助你在不同的项目中调用同一个已经安装的模块,无需重复安装。 | npm主要用于安装和管理Node.js的模块和包,可以用于从npm仓库下载模块并安装到项目中。 |
| 用法 | 安装pnpm:npm install -g pnpm | 安装nvm:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh bash | 安装npx:随npm一起安装 | 安装npm:随Node.js一起安装 |
| 优缺点 | pnpm的优点是避免重复下载文件,提高下载速度;缺点是在不同的项目中调用同一个模块时需要使用npx。 | nvm的优点是可以方便地切换不同版本的Node.js,解决版本兼容性问题;缺点是需要在不同项目中分别配置和使用。 | npx的优点是在不同的项目中调用同一个已经安装的模块,无需重复安装;缺点是在不同的项目中需要分别使用npx。 | npm的优点是广泛使用,社区成熟,可从npm仓库下载模块并安装到项目中;缺点是在下载速度和文件存储方面可能存在一些问题。 |
web前端开源许可证类型及区别?
| 开源许可证 | 特点 |
|---|---|
| BSD许可证 | 可以自由使用、修改、再发布 |
| MIT许可证 | 可以自由使用、修改、再发布 |
| Apache许可证 | 允许商业使用、修改、再发布,但禁止使用商标和作者信息 |
| GPL许可证 | 主张代码及衍生代码的开源,不允许修改后和衍生的代码做为闭源的商业软件进行发布和出售 |
| AGPL许可证 | AGPL是GPL的一个补充,在GPL的基础上加了一些限制 |