npm npx cnpm yarn pnpm nodejs包管理乱局

对于前端项目如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:更进一步的磁盘占用优化,通过软硬连接管理,同时会有差分管理,下载更新速度快,节省磁盘空间。

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

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

build with Hugo, theme Stack, visits 0