首頁 web前端 js教程 mise 與 asdf 用於 JavaScript 專案環境管理

mise 與 asdf 用於 JavaScript 專案環境管理

Jan 04, 2025 am 07:35 AM

作者:Rosario De Chiara✏️

mise 和 asdf 是旨在幫助開發人員管理多個版本的程式語言和環境的工具。這兩個工具都旨在透過簡化工具版本之間的管理和切換來簡化多語言開發,這是使用不同程式語言和框架時的常見挑戰。

asdf是什麼?

asdf 是一種流行的版本管理器,它使用一種稱為「shimming」的技術在 Python、Node.js 和 Ruby 等不同版本的工具之間切換。它會建立特定版本的臨時路徑,修改環境以確保在不同專案中使用正確版本的工具。但是,由於這些墊片的工作方式,此方法可能會帶來性能開銷。

什麼是米斯?

mise 是法文「mise-en-place」的縮寫,即準備表格的方式,旨在透過消除對墊片的依賴來改進 asdf。

mise 用 Rust 編寫,直接修改 PATH 環境變量,從而加快執行時間。它旨在與 asdf 插件無縫協作,但提供命令模糊匹配等功能以及同時安裝相同工具的多個版本的能力。

asdf 入門

要安裝 asdf,請按照入門指南根據您的系統安裝先決條件。環境準備好後,您可以在主目錄中 git clone 官方儲存庫:

 $ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
登入後複製
登入後複製
登入後複製
登入後複製

上面的指令會將完成安裝所需的所有腳本和設定檔複製到 .asdf 目錄中。

上面安裝指南的下一步是執行安裝腳本。同樣,此步驟將取決於您的環境和作業系統的詳細信息,因此只需按照指南在 shell 初始化腳本中添加正確的腳本呼叫(例如 .bashrc、.bash_profile 等)。在此過程結束時,通常在重新啟動 shell 後,您應該能夠將 asdf 作為命令運行:

mise vs. asdf for JavaScript project environment management

此時,asdf 正在運行,但要使用它進行一些有用的操作,您必須安裝插件來處理與您打算開發的專案相關的工具(用asdf 的說法)(例如Node.js、蟒蛇等) 。

為此,我們安裝了 Node.js 外掛。在 asdf 中,插件是一段程式碼,可讓您處理框架或程式庫的不同版本。在本例中,我們將安裝 Node.js 插件,然後安裝幾個版本的 Node.js 只是為了了解 asdf 將如何處理它們。

我們將使用以下程式碼安裝 Node.js 外掛程式:

 $ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
登入後複製
登入後複製
登入後複製
登入後複製

請注意,您必須明確指定包含外掛程式原始碼的 git 儲存庫。插件安裝到位後,您可以透過以下命令使用它來安裝特定版本的 Node.js:

 $ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
登入後複製
登入後複製
登入後複製

在此範例中,您安裝了最新版本,在撰寫本文時為 23.1.0。使用以下命令,您可以安裝特定版本的 Node.js:

 $ asdf install nodejs latest
登入後複製
登入後複製
登入後複製

要檢查兩者在您的系統中是否可用,請使用以下命令:

 $ asdf install nodejs 20.0.0
登入後複製
登入後複製

要選擇要使用的 Node.js 版本,請使用以下指令:

 $ asdf shim-versions node
 nodejs 20.0.0
 nodejs 23.1.0
登入後複製
登入後複製

asdf 透過使用以下格式填入名為[.tool-versions](https://asdf-vm.com/manage/configuration.html#tool-versions) 的檔案來處理工具的各種版本:

 $ asdf global nodejs 20.0.0
 $ node --version
 v20.0.0
 $ asdf global nodejs 23.1.0
 $ node --version
 v23.1.0
登入後複製

asdf 使用命令自動操作 .tool-versions 檔案來指定您打算使用的給定版本,就像我們上面對 Node.js 版本 20.0.0 所做的那樣。根據全域、shell 和本機參數,我們會將工具的版本新增到特定的 .tool-versions 檔案中,這會對您的環境產生不同的影響。下面解釋一下安裝 Node.js 20.0.0 版本時參數的影響:

  • asdf global nodejs 20.0.0:在這種情況下,我們打算在整個系統中使用此特定版本,無論它是否有不同的指定
  • asdf shell nodejs 20.0.0:在這種情況下,我們希望僅在目前 shell 會話中使用此版本的 Node.js
  • asdf local nodejs 20.0.0:這種風格的指令將建立一個 .tool-versions,指定僅對執行指令的目錄有​​效的 Node.js 版本。這意味著我們可以在專案的不同子目錄中擁有同一工具的不同版本。這是一個非常簡潔的功能,與複雜的專案有關。在下圖中,您可以看到這對您的環境有何影響:
ruby 2.5.3
nodejs 10.15.0
登入後複製

透過第一個指令,我們告訴 asdf 在主目錄中使用版本 20.0.0,並且 node --version 確認版本。然後,我們建立一個名為 test 的目錄。在測試中,我們執行 asdf,為 Node 指定不同的版本(版本 23.1.0),並且節點 --version 再次確認我們正在使用版本 23.1.0。最後回到主目錄,可以看到本地的Node.js版本還是20.0.0。

什麼是墊片?

現在我們的系統上已經有了 asdf,讓我們了解什麼是 shim 以及為什麼它在使用 asdf 時很重要。

在電腦科學中,墊片是一種在不同版本之間透明地重定向命令(例如,庫方法呼叫)的方法。這裡的關鍵是「透明」這個詞。 asdf 的整個想法是允許使用者以透明的方式更改當您編寫節點或 python 或任何其他套件時真正調用的內容。使用者不斷輸入 node 或 python,但 asdf 已根據 .tool-versions 檔案中寫入的內容設定了通往正確版本的不同路徑(墊片)。

外掛程式只是一組聰明的 shell 腳本,讓 asdf 選擇特定指令的正確版本(例如,檢查 Node.js 外掛程式)。 bin目錄下的指令只是實作了當你使用Node.js外掛安裝新版本、選擇特定版本使用等時asdf必須執行的內容

開始使用 mise

安裝 mise 的過程比 asdf 更容易,因為您不需要複製 git 儲存庫:

 $ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
登入後複製
登入後複製
登入後複製
登入後複製

啟動指南非常簡單;執行上面的命令並重新啟動 shell 後,您將能夠執行以下命令:

 $ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
登入後複製
登入後複製
登入後複製

這將顯示您的安裝狀態。安裝 mise 後,您可能需要使用 [mise activate](https://mise.jdx.dev/cli/activate.html) 命令啟動它。

此時,mise 指令可用於最常見的任務:安裝特定版本的框架以使其在系統中全域可用:

 $ asdf install nodejs latest
登入後複製
登入後複製
登入後複製

我們從節點可執行檔案不在系統中的情況開始。使用 mise 命令,我們在全域安裝特定的節點版本以使其可用。若要驗證目前安裝的工具的版本,可以使用以下命令:

 $ asdf install nodejs 20.0.0
登入後複製
登入後複製

在上面的指令中,您可以看到上面框中安裝的節點工具以及Python版本。

比較 asdf 與 mise

mise 框架使用相同的 asdf 機制來處理整個系統和特定目錄內的工具的不同配置。 asdf 中 .tool-versions 檔案的作用由 mise.toml 檔案扮演,該檔案將收集配置。

在mise中,沒有類似asdf插件的概念,這是一件好事,因為在asdf中,安裝特定版本的工具- 比方說node@20.0.0 - 是一個兩步驟過程(首先安裝Node. js 插件,然後安裝特定版本的Node)。在mise中,您只需解決所需工具的單一版本,mise將在幕後為您處理配置它的所有繁重工作。在下面的兩個方塊中,您可以看到 asdf 指令如何轉換為 mise:

 $ asdf shim-versions node
 nodejs 20.0.0
 nodejs 23.1.0
登入後複製
登入後複製

在mise中,這一切都可以透過安裝外掛程式和運行時並設定版本的步驟來完成:

 $ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
登入後複製
登入後複製
登入後複製
登入後複製

mise 的語法糖優雅地解決了 asdf 的冗長問題。儘管如此,mise 在處理不同版本的方式上還是有所不同的,這對整個體驗有著更廣泛的影響。在下圖中,我們描述了在 asdf 工作的環境中執行節點命令時發生的情況:

mise vs. asdf for JavaScript project environment management

這個過程當然會影響執行指令所需的時間。另一方面,mise 透過利用另一種機制解決了根據配置選擇正確工具的相同問題:PATH 變量,這是作業系統執行命令的本機機制。

效能與不使用 mise 運行指令(例如,node)相同。出於好奇,mise 的工作方式與 asdf 不同:mise 追蹤目錄的每次更改,以便當使用者更改目錄時,mise 呼叫內部掛鉤來更新 PATH 變數。這個鉤子非常高效,因為它是用 Rust 編寫的,並且會動態設定 PATH 變數來配置您的環境。

結論

asdf 和 mise 都可以有效管理多個工具版本,每個版本都有獨特的機制。由於其 PATH hook 機制,mise 在效率方面表現出色,而 asdf 提供了更廣泛的工具相容性,但其 shim 機制的性能權衡。 mise 與 asdf 插件的兼容性彌補了工具之間的差距。

無論優先考慮速度或選擇,這兩種工具都使開發人員能夠輕鬆管理其環境,為各種軟體包和工具提供繁榮的生態系統。


只需幾分鐘即可設定 LogRocket 的現代錯誤追蹤:

  1. 造訪 https://logrocket.com/signup/ 以取得應用程式 ID。
  2. 透過 NPM 或 script 標籤安裝 LogRocket。 LogRocket.init() 必須在客戶端調用,而不是伺服器端。

NPM:

 $ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
登入後複製
登入後複製
登入後複製

腳本標籤:

 $ asdf install nodejs latest
登入後複製
登入後複製
登入後複製

3.(可選)安裝插件以與您的堆疊進行更深入的整合:

  • Redux 中介軟體
  • ngrx 中介軟體
  • Vuex 外掛程式

現在就開始。

以上是mise 與 asdf 用於 JavaScript 專案環境管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1421
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
神秘的JavaScript:它的作用以及為什麼重要 神秘的JavaScript:它的作用以及為什麼重要 Apr 09, 2025 am 12:07 AM

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

JavaScript的演變:當前的趨勢和未來前景 JavaScript的演變:當前的趨勢和未來前景 Apr 10, 2025 am 09:33 AM

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript引擎:比較實施 JavaScript引擎:比較實施 Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

JavaScript:探索網絡語言的多功能性 JavaScript:探索網絡語言的多功能性 Apr 11, 2025 am 12:01 AM

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

如何使用Next.js(前端集成)構建多租戶SaaS應用程序 如何使用Next.js(前端集成)構建多租戶SaaS應用程序 Apr 11, 2025 am 08:22 AM

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

從C/C到JavaScript:所有工作方式 從C/C到JavaScript:所有工作方式 Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

使用Next.js(後端集成)構建多租戶SaaS應用程序 使用Next.js(後端集成)構建多租戶SaaS應用程序 Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

See all articles