从功能上划分,这三个功能本身是独立的。实际上,很多工具把这 3 个功能集成在了一起。
包管理器
包管理器用于管理依赖的安装、升级、删除。包管理器本身通常大而全,也支持项目管理器和打包发布器,比如 npm/yarn/pnpm.
项目管理器
项目管理器,比如 lerna, nx, 用于管理项目代码,比如管理 monorepo, 创建脚手架等等。项目管理器依赖包管理器,可以配置使用哪个包管理器来安装依赖。项目管理器通常也集成了打包发布功能。
打包发布器
打包发布指的是把软件打包发布到软件商店中,比如发布到 npmjs.com. 通常没有单独的打包发布器,而是集成在项目管理器和包管理器中。
这三个概念不知在 js 生态中适用,在其他的生态中也适用。