全能編程開發工程師的選擇: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/zh-hant/n/257589.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:45
下一篇 2024-12-15 12:46

相關推薦

發表回復

登錄後才能評論