前端包管理工具
NPM、CNPM、NVM、NRM、YARN、NPX、PNPM
一、npm
包管理工具、常用命令
npm install <pack_name>
npm run dev
# npm仓库登录、退出
npm login
npm logout
npm adduser
# npm 发布
npm publish
npm unpublish
npm info <pack_name>
二、cnpm
淘宝的npm源、用法同npm
cnpm install
三、nvm
node的version版本管理工具
npm i -g nvm # 安装
nvm ls # 列出所有
nvm use 18 # 切换版本
# 安装版本
nvm install 16.19.1
nvm uninstall 16.19.1
# 使用node18运行app.js
nvm run 18 app.js
四、nrm
npm源的管理工具
npm i -g nrm # 安装
nrm ls # 列表
nrm use <name> # 切换源
nrm add <name> <url> <home> # 添加源
nrm current # 当前源
五、yarn
特性/方面 | npm | yarn |
---|---|---|
性能 | 默认情况下性能可能受到网络影响,npm 7 引入了性能优化 | 使用并行安装和缓存机制,提供更好的安装速度 |
依赖锁定 | npm 5 引入 package-lock.json 文件锁定依赖 | 使用 yarn.lock 文件,从一开始就支持依赖锁定 |
工作区支持 | npm 7 引入工作区支持 | 从一开始就支持工作区,方便管理多个包 |
插件系统 | 提供插件系统,允许扩展功能 | 提供插件系统,但社区支持和插件数量较少 |
配置文件 | 使用 package.json 和 npm-shrinkwrap.json | 使用 package.json 和 yarn.lock 文件 |
社区和生态系统 | 官方工具,拥有庞大的社区和生态系统 | 社区不断增长,但与 npm 相比规模较小 |
兼容性 | 作为官方工具,兼容性高 | 兼容大多数 npm 包,但可能存在行为差异 |
命令行界面 | 提供丰富的命令行命令 | 命令行界面与 npm 类似,但命名和用法有所不同 |
这个表格概括了 npm 和 yarn 在性能、依赖锁定、工作区支持、插件系统、配置文件、社区和生态系统以及命令行界面方面的主要差异。开发者可以根据自己的项目需求和偏好来选择使用哪个工具。
六、NPX
包执行器,运行 npm 包中的可执行文件,而无需全局安装这些包
- 无需全局安装:使用
npx
运行任何 npm 包,而无需安装其到全局环境。 - 本地执行:
npx
默认会在当前项目的node_modules/.bin
目录下查找可执行文件,这意味着它会使用项目依赖中的包,而不是全局依赖。 - 临时安装:如果你需要全局安装一个包来运行它,
npx
可以为你临时安装该包,这样它就不会影响全局依赖。 - 简化命令:
npx
简化了命令行的使用,而不需要记住复杂的命令。 - 支持 npm 脚本:
npx
可以执行package.json
中定义的 npm 脚本。 - 环境隔离:
npx
创建了一个隔离的环境来运行命令,这有助于避免污染全局环境。
使用 npx
的基本语法如下:
npx <package>@<version> [args]
或者,如果你想要执行一个 npm 脚本:
npx <package> -- <args>
例如,如果你想运行 create-react-app
来创建一个新的 React 项目,你可以这样做:
npx create-react-app my-app
七、PNPM
pnpm
(Parallel Node Package Manager):高效的包管理器,它提供了一种全新的方式安装和管理 Node.js 包。pnpm
的目标是解决 npm 和 yarn 在处理大型依赖树时的性能问题,以及减少磁盘空间的使用。
-
并行安装:
pnpm
能够并行安装依赖,这大大加快了安装速度。 -
磁盘空间节省:
pnpm
使用硬链接(hard links)来共享依赖,这意味着相同的包只会在磁盘上存储一次,即使多个项目依赖于它。这显著减少了磁盘空间的使用。 -
依赖隔离:每个项目都有自己的依赖树,这有助于避免依赖冲突。
-
快照:
pnpm
使用快照(snapshot)来跟踪依赖的状态,这使得依赖的安装和更新更加快速。 -
兼容性:
pnpm
与 npm 和 yarn 的工作方式兼容,可以无缝替换它们。 -
支持工作区:
pnpm
支持工作区(workspaces),允许你在一个仓库中管理多个项目。 -
环境隔离:
pnpm
创建隔离的环境来运行项目,确保环境的一致性。 -
无需全局安装:与
npx
类似,pnpm
允许你运行包的可执行文件,而无需全局安装。
pnpm install
pnpm run <script-name>
# 全局安装一个包
pnpm add -g <package-name>
推荐,vue3源码使用pnpm进行管理仓库