对于前端项目如vue、react大多由nodejs环境来构建编译,事实上,nodejs做的事就是将vue、react代码翻译成html,css,js,浏览器最终也只能运行html,css,js,随着nodejs版本的演进,包管理可谓是一团乱麻。作为一名资深工程师,有时候避免不了跑跑前端开源项目,但是一直非常困惑,这个项目用npm,另一个项目用yarm,别的又用了其他,这尼玛变来变去,花样太多了,我觉得本质上就是一开始包管理器没有设计好,java有maven、gradle ,python 有 pip,go 有mod,rust 有cargo,从没听说包管理器名字都换了- -!

面对这乱局,偶尔会接触前端项目的我,也只能水一篇文章了,也方便后期查阅,因为实在记不住~

npm: nodejs官方包管理器,默认从官网下载https://www.npmjs.org/
npx: nodejs 执行器,本质就是npm run,执行方便而已
cnpm: 本质和npm一样,只是包会从国内仓库下载
yarn:相对于npm有性能优化,包管理扁平化,而不是嵌套依赖。
pnpm:更进一步的磁盘占用优化,通过软硬连接管理,同时会有差分管理,下载更新速度快,节省磁盘空间。

特征/工具 npm Yarn cnpm pnpm npx
时间 2010 2016 未知 2016 2017
特点 Node.js的官方包管理器,广泛使用。支持大量包和版本,易于入门。 由Facebook开发,注重速度和包的稳定安全。使用锁文件确保依赖一致性。 针对中国开发者的npm镜像,提高在中国大陆地区的访问速度和安装效率。 侧重于性能和空间节省,通过硬链接和符号链接来重用包,减少冗余。 npm的包运行器,允许直接执行npm仓库中的包而不需要全局安装。
性能对比 标准基准,较慢 相对更快,通过并行下载和更好的缓存管理优化性能 依赖于npm,性能提升主要来源于镜像的使用 在多项目中重用包,节省空间和安装时间,性能优异 适用于执行单次任务,避免全局安装,性能取决于npm
使用说明/工具 npm Yarn cnpm pnpm npx
安装包 npm install package_name yarn add package_name cnpm install package_name pnpm add package_name -
安装特定版本包 npm install package_name@version yarn add package_name@version cnpm install package_name@version pnpm add package_name@version -
全局安装包 npm install -g package_name yarn global add package_name cnpm install -g package_name pnpm add -g package_name -
更新包 npm update package_name yarn upgrade package_name cnpm update package_name pnpm update package_name -
卸载包 npm uninstall package_name yarn remove package_name cnpm uninstall package_name pnpm remove package_name -
列出已安装包 npm list yarn list cnpm list pnpm list -
运行脚本 npm run script_name yarn run script_name cnpm run script_name pnpm run script_name npx script_name (执行项目中或远程的npm包命令)
创建项目 npm initnpm init project_name yarn inityarn create project_name cnpm initcnpm init project_name pnpm initpnpm create project_name -
查看包信息 npm view package_name yarn info package_name cnpm view package_name pnpm info package_name -

官方文档:
npm: https://docs.npmjs.com/
Yarn: ttps://classic.yarnpkg.com/en/docs
cnpm: 和npm一致
pnpm: https://pnpm.io/
npx: npm文档中包含npx使用说明

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注