全能编程开发工程师的选择:PNPM命令

无论是前端还是后端领域,代码的包管理都是必不可少的环节。纵观市场,NPM是目前最流行的包管理器之一,然而,它的行为却经常让开发者头疼不已。PNPM作为一款新兴的、具有全新设计思路的包管理器,为什么值得我们更加的关注呢?本文从多个方面对PNPM进行详细的阐述。

一、快速的包依赖安装

在NPM的使用中,几乎所有包的下载都是存放在全局路径中的,而这种方式会导致相同的模块在不同项目中进行了重复下载,也会导致包的版本冲突。而PNPM极大的提升了依赖包的下载速度,以及占用更少的磁盘空间。

如下所示是使用NPM下载packages.json文件包依赖的命令,经过数十秒才能完成:

npm install

而PNPM仅需要一条命令就能完成包的安装并生成.lockfile,不仅仅提高了效率,还保证了开发环境的稳定性:

pnpm install

它的优势在于 PNPM 的包依赖被存放在了单独的项目中,当需要安装第三方库时,PNPM会在自己的缓存中寻找是否存在该文件,只有在缓存中不存在的时候才会从外部拉取该包,这也是PNPM能够提供快速的包依赖安装的重要原因。

如果您想进一步了解PNPM的包依赖安装过程,可以参考官方文档Point of View of the User – How does pnpm work?

二、依赖管理与命令执行

对于一个具有多个项目的开发人员来说,经常需要切换到不同的工作空间,这个时候,NPM的包依赖管理就显得非常麻烦。但是,在PNPM中,你可以通过命令行来管理不同项目之间不同的依赖版本。具体如下所示:

# 进入项目A
cd /path/to/projectA
# 项目A 安装依赖
pnpm install

# 进入项目B
cd /path/to/projectB
# 项目B 安装依赖
pnpm install

# 回到项目A
cd /path/to/projectA
pnpm run dev

# 回到项目B
cd /path/to/projectB
pnpm run start

这样,不同的项目之间就不会出现依赖版本的冲突了。

三、全局模块的问题

使用NPM时,全局模块经常会带来麻烦。全局模块不仅限制了应用程序的可移植性,还可能导致升级过程失效。这是因为每个全局模块都可能被称为全局可见,即使你从另一个项目中删除了这个模块,它仍然可能被其他的应用程序使用。此外,全局模块的权限管理非常困难,因此,在生产设备上的软件部署容易出错。

而PNPM支持在每个项目内部安装依赖,这使得使用PNPM的项目具有更高的可移植性。一旦部署完成,应用程序的依赖关系不受全局模块的影响,所有依赖关系都被限制在每个项目的本地文件系统中。这将大大简化软件部署,并使它更加容易和可靠。

四、支持Workspaces特性

PNPM完全支持NPM Workspaces特性,这也是它的一个重要优势。Workspaces是为了解决多个相互依赖的项目之间耦合程度太高的问题,工作空间可以让你在同一仓库中维护多个子项目,既提高依赖项安装的效率,又方便了代码的维护和管理。

下面是一个使用工作区的示例:

{
  "name": "example",
  "version": "0.0.1",
  "description": "My example workspace package",
  "private": true,
  "workspaces": [
    "packages/*"
  ]
}

example文件夹下还有“packages”文件夹,在 packages 文件夹中的每一个 JavaScript 项目会作为好像它是独立的 npm 包一样来处理。这里面,可以按照需要更新依赖项。比如,可以使用不同的依赖项版本,或者甚至替换其中的依赖项。

五、PNPM的优势总结

PNPM为开发者提供了一种更加人性化、更加简单的包管理方式,具有如下几个优势:

  1. PNPM快速而有效地安装依赖项,实现了本地安装。
  2. PNPM支持同一项目内的多个依赖关系。
  3. PNPM不仅限于NPM的包管理器,还支持Yarn的语法。
  4. PNPM同时支持NPM Workspaces的特性,深度集成实现简单、可管理的Monorepo。
  5. PNPM使用npm-style包描述符,这与NPM类似,使得PNPM易于使用和移植。
  6. PNPM部署到生产环境中时,不会在安装和运行时出现权限问题。

结语

总的来说,PNPM在包管理方面提供了更快、更有效、更可靠的解决方案。无论你是前端开发还是后端开发,它都是你的有力帮手。如果你还没有体验过PNPM的强大功能,赶快行动吧。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/257589.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2024-12-15 12:45
下一篇 2024-12-15 12:46

相关推荐

发表回复

登录后才能评论