<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: The1111mp</title>
    <description>The latest articles on DEV Community by The1111mp (@the1111mp).</description>
    <link>https://dev.to/the1111mp</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1218162%2F2e4bc8dd-9e06-40d6-949c-c5298c20629d.jpeg</url>
      <title>DEV Community: The1111mp</title>
      <link>https://dev.to/the1111mp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/the1111mp"/>
    <language>en</language>
    <item>
      <title>Need to send files locally with context? Synclan blends LAN transfers with an IM chat feed</title>
      <dc:creator>The1111mp</dc:creator>
      <pubDate>Wed, 29 Jul 2026 11:20:43 +0000</pubDate>
      <link>https://dev.to/the1111mp/need-to-send-files-locally-with-context-synclan-blends-lan-transfers-with-an-im-chat-feed-4bg</link>
      <guid>https://dev.to/the1111mp/need-to-send-files-locally-with-context-synclan-blends-lan-transfers-with-an-im-chat-feed-4bg</guid>
      <description>&lt;h2&gt;
  
  
  🚀 Synclan: A LAN File Transfer Tool with a Feishu/Lark-like IM Experience
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; An open-source, local area network (LAN) instant messaging &amp;amp; file transfer tool that requires &lt;strong&gt;no internet&lt;/strong&gt;, &lt;strong&gt;no third-party cloud servers&lt;/strong&gt;, and &lt;strong&gt;no app installation on recipient devices&lt;/strong&gt;. Just launch the desktop app, and any other device (phone, laptop, tablet) can scan a QR code to chat, share files, and send rich text/Markdown.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;🔗 GitHub Repository: &lt;a href="https://github.com/1111mp/synclan" rel="noopener noreferrer"&gt;1111mp/synclan&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📦 Latest Download: &lt;a href="https://github.com/1111mp/synclan/releases/latest" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc99gjaryfx2a4w8xe826.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc99gjaryfx2a4w8xe826.webp" alt="Synclan Home" width="800" height="636"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 Why Build Synclan?
&lt;/h2&gt;

&lt;p&gt;We frequently face the need to transfer files between devices locally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quickly sharing files, code snippets, or screenshots between work PCs.&lt;/li&gt;
&lt;li&gt;Sharing photos between personal computers at home.&lt;/li&gt;
&lt;li&gt;Sending a temporary document to a colleague's laptop without adding them on social media.&lt;/li&gt;
&lt;li&gt;Transferring sensitive documents without routing through external cloud servers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While excellent LAN tools like &lt;strong&gt;LocalSend&lt;/strong&gt; and &lt;strong&gt;AirDrop&lt;/strong&gt; exist, high-frequency usage reveals two pain points:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Transaction-based, not Context-based&lt;/strong&gt;
Tools like LocalSend focus on &lt;code&gt;Select File ➔ Send ➔ Receive&lt;/code&gt;. However, real-world collaboration often requires continuous communication: sending a quick note explaining the file, sharing follow-up links, or referencing previously sent history—&lt;strong&gt;a workflow much closer to an Instant Messaging (IM) app.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Installation Barriers&lt;/strong&gt;
Installing a dedicated app on every guest or temporary device isn't always practical or permitted.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Goal:&lt;/strong&gt; &lt;em&gt;"Launch the app, discover local devices, and exchange files &amp;amp; messages naturally like an IM chat."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Inspired by the polished user experience of modern team chat apps like &lt;strong&gt;Feishu/Lark&lt;/strong&gt;, Synclan blends IM rich-text editing, hotkeys, and media integration into local-network communication.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Comparison with Popular Tools
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;WeChat / Lark&lt;/th&gt;
&lt;th&gt;AirDrop&lt;/th&gt;
&lt;th&gt;LocalSend&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Synclan&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Network Mechanism&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloud Servers&lt;/td&gt;
&lt;td&gt;LAN / Bluetooth&lt;/td&gt;
&lt;td&gt;LAN&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100% Pure LAN&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Interaction Model&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;IM Chat Feed&lt;/td&gt;
&lt;td&gt;Pop-up Alert&lt;/td&gt;
&lt;td&gt;Receive Card&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;IM Chat Feed&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Recipient Requirement&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Client App Required&lt;/td&gt;
&lt;td&gt;Apple Devices Only&lt;/td&gt;
&lt;td&gt;Client App Required&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;No App (Browser QR Scan)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Uncompressed Media&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ (Compressed/Limited)&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;✅ (Original Quality)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🛠️ System Architecture &amp;amp; Tech Stack
&lt;/h2&gt;

&lt;p&gt;Synclan utilizes a hybrid server/web architecture: &lt;strong&gt;The desktop app acts as the host/server, allowing web browsers on other devices to connect zero-install.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-----------------------------------------------------------+
|                    Synclan Desktop App                    |
|                                                           |
|  +--------------------+   +----------------------------+  |
|  |   Tauri 2.0 (GUI)  |   |   Rust Core (Backend)      |  |
|  +--------------------+   |  - Axum (HTTP / File)      |  |
|                           |  - Socket.IO (Real-time)   |  |
|                           |  - SQLite (Local DB)       |  |
|                           +----------------------------+  |
+-----------------------------------------------------------+
                                ▲
                                │ LAN (HTTP / WebSockets)
                        +-------┴-------+
                        │               │
                 +--------------+  +---------------+
                 |  Mobile Web  |  |  PC Browser   |
                 +--------------+  +---------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Core Technologies
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React, TypeScript, Tailwind CSS, Shadcn/ui.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desktop Shell&lt;/strong&gt;: &lt;strong&gt;Tauri 2.0&lt;/strong&gt; (offering minimal memory footprint compared to Electron).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: &lt;strong&gt;Rust&lt;/strong&gt; (&lt;code&gt;Axum&lt;/code&gt; for HTTP API &amp;amp; Static Web Serving, &lt;code&gt;Socket.IO&lt;/code&gt; for real-time signaling, &lt;code&gt;SQLx&lt;/code&gt; + &lt;code&gt;SQLite&lt;/code&gt; for local storage).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✨ Key Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Rich Text Input Powered by Lexical
&lt;/h3&gt;

&lt;p&gt;Supports rich text formatting, Markdown shortcuts, Emojis, code block highlighting, image pasting from clipboard, and file drag-and-drop directly into the composer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fugqddp8aytm7e7v14fqv.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fugqddp8aytm7e7v14fqv.webp" alt="Synclan" width="800" height="636"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs5qpmfjdaozv77h9d3zt.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs5qpmfjdaozv77h9d3zt.webp" alt="Synclan" width="800" height="633"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxa26aeass5h9o1t716o8.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxa26aeass5h9o1t716o8.webp" alt="Synclan" width="800" height="801"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Large File Chunked Uploads
&lt;/h3&gt;

&lt;p&gt;Files remain strictly within your local network. Large files are automatically split into chunked streams (&lt;code&gt;Chunks ➔ Server Stream ➔ Reassembly&lt;/code&gt;), preventing network dropouts from ruining long transfers while keeping RAM usage minimal.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. QR Code &amp;amp; Web Access
&lt;/h3&gt;

&lt;p&gt;Automated local IP binding and QR code generation. Any smartphone or desktop browser can instantly join the session by pointing their camera at the screen—no registration or account setup needed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2hcfafnf1o54l4yhzc39.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2hcfafnf1o54l4yhzc39.webp" alt="Synclan" width="800" height="637"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fljmlv5hmmwzzryd0s9rb.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fljmlv5hmmwzzryd0s9rb.webp" alt="Synclan" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzoq4kbn17iomgzc85eqx.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzoq4kbn17iomgzc85eqx.webp" alt="Synclan" width="800" height="1784"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Data Security &amp;amp; Open API
&lt;/h3&gt;

&lt;p&gt;All data is saved locally in an encrypted SQLite database. Includes support for HTTPS and self-signed certificates. An OpenAPI UI is built-in out of the box (&lt;code&gt;http://127.0.0.1:53317/api/docs&lt;/code&gt;) for easy custom integrations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fisz4ztprvpr4vtt7ttyy.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fisz4ztprvpr4vtt7ttyy.webp" alt="Synclan" width="800" height="634"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🗺️ Roadmap
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] File transfer resume (pause/continue) &amp;amp; granular progress details&lt;/li&gt;
&lt;li&gt;[ ] Richer message types (voice notes, collapsible code previews)&lt;/li&gt;
&lt;li&gt;[ ] Granular device access permissions &amp;amp; PIN verification&lt;/li&gt;
&lt;li&gt;[ ] Enhanced local TLS/HTTPS cert management&lt;/li&gt;
&lt;li&gt;[ ] Further optimizations for mobile browsers&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📝 Wrap Up
&lt;/h2&gt;

&lt;p&gt;Building Synclan has been a fun journey combining &lt;strong&gt;React, Tauri, Rust, WebSocket signaling, chunked file pipelines, and rich text editors&lt;/strong&gt; into a practical, everyday solution.&lt;/p&gt;

&lt;p&gt;If you frequently transfer files across different OS platforms in your home or office network, give it a spin!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⭐️ &lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/1111mp/synclan" rel="noopener noreferrer"&gt;1111mp/synclan&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📦 &lt;strong&gt;Download&lt;/strong&gt;: &lt;a href="https://github.com/1111mp/synclan/releases/latest" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>selfhosted</category>
      <category>privacy</category>
      <category>tauri</category>
    </item>
    <item>
      <title>Easily install and manage multiple Node.js versions using nvm-desktop</title>
      <dc:creator>The1111mp</dc:creator>
      <pubDate>Sat, 25 Nov 2023 06:05:26 +0000</pubDate>
      <link>https://dev.to/the1111mp/easily-install-and-manage-multiple-node-versions-using-nvm-desktop-4nim</link>
      <guid>https://dev.to/the1111mp/easily-install-and-manage-multiple-node-versions-using-nvm-desktop-4nim</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;As a front-end development engineer, we usually install Node.js by downloading the binary installation package from &lt;a href="https://nodejs.org/" rel="noopener noreferrer"&gt;the official website&lt;/a&gt;. However, in actual development, it is inevitable that due to some compatibility issues, we need to install and switch to different versions of Node.js. If we still use this method, then It is undoubtedly very inconvenient to have to uninstall the existing version before installing the new version.&lt;/p&gt;

&lt;p&gt;Today we will introduce a tool to install and manage multiple Node.js versions through visual interface operation: &lt;a href="https://github.com/1111mp/nvm-desktop" rel="noopener noreferrer"&gt;&lt;strong&gt;nvm-desktop&lt;/strong&gt;&lt;/a&gt; (full name: &lt;strong&gt;&lt;code&gt;Node Version Manager Desktop&lt;/code&gt;&lt;/strong&gt;). Supports Windows and macOS, the code is completely open source and can be used with confidence.&lt;/p&gt;

&lt;p&gt;Supports setting up and switching different versions of Node separately for different projects.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/1111mp" rel="noopener noreferrer"&gt;
        1111mp
      &lt;/a&gt; / &lt;a href="https://github.com/1111mp/nvm-desktop" rel="noopener noreferrer"&gt;
        nvm-desktop
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Node Version Manager Desktop - A desktop application to manage multiple active node.js versions.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
  &lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/31227919/256513957-67132758-8aa9-4b05-b987-18fdd5980936.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjQ0MzcsIm5iZiI6MTc4NTMyNDEzNywicGF0aCI6Ii8zMTIyNzkxOS8yNTY1MTM5NTctNjcxMzI3NTgtOGFhOS00YjA1LWI5ODctMThmZGQ1OTgwOTM2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzI5VDExMjIxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM1MzY4OTQzOTkyMDYxOTM5ZTUyOTc0MWIwMTU0MDZhNDA4MTAwNzE5OTdjMTM5Zjg2YjQyYTg0MjgxNWRlZjYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.pZCRJGFJyQf5sV9xLK7HqDFo8sDzBIgzv_9hIa07iqY"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F31227919%2F256513957-67132758-8aa9-4b05-b987-18fdd5980936.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjQ0MzcsIm5iZiI6MTc4NTMyNDEzNywicGF0aCI6Ii8zMTIyNzkxOS8yNTY1MTM5NTctNjcxMzI3NTgtOGFhOS00YjA1LWI5ODctMThmZGQ1OTgwOTM2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzI5VDExMjIxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM1MzY4OTQzOTkyMDYxOTM5ZTUyOTc0MWIwMTU0MDZhNDA4MTAwNzE5OTdjMTM5Zjg2YjQyYTg0MjgxNWRlZjYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.pZCRJGFJyQf5sV9xLK7HqDFo8sDzBIgzv_9hIa07iqY" alt="nvm-desktop"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;nvm-desktop&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A cross-platform Node.js version manager with both:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GUI app&lt;/strong&gt; (&lt;code&gt;nvm-desktop&lt;/code&gt;) for visual management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI tool&lt;/strong&gt; (&lt;code&gt;nvmd&lt;/code&gt;) for terminal workflows&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Supports &lt;code&gt;macOS&lt;/code&gt;, &lt;code&gt;Windows&lt;/code&gt;, and &lt;code&gt;Linux&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;English | &lt;a href="https://github.com/1111mp/nvm-desktop/./README-zh_CN.md" rel="noopener noreferrer"&gt;简体中文&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Screenshot&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/31227919/563704429-a66ba500-10ba-4711-a625-c8707765621d.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjQ0MzcsIm5iZiI6MTc4NTMyNDEzNywicGF0aCI6Ii8zMTIyNzkxOS81NjM3MDQ0MjktYTY2YmE1MDAtMTBiYS00NzExLWE2MjUtYzg3MDc3NjU2MjFkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzI5VDExMjIxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJjYzQ0OTdhYmIxM2RjMjI0NjVmZjJjZmE5NjQ2Y2U0Nzk4NjAwOTk1MzkzYTNjMzQ3M2ExYjQ4ODRkYjdkYjEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.DAgjwtgrAARPOWR6yEm8y5Y4WCaiuTLJXv2T0-2Pk0Q"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F31227919%2F563704429-a66ba500-10ba-4711-a625-c8707765621d.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjQ0MzcsIm5iZiI6MTc4NTMyNDEzNywicGF0aCI6Ii8zMTIyNzkxOS81NjM3MDQ0MjktYTY2YmE1MDAtMTBiYS00NzExLWE2MjUtYzg3MDc3NjU2MjFkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzI5VDExMjIxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJjYzQ0OTdhYmIxM2RjMjI0NjVmZjJjZmE5NjQ2Y2U0Nzk4NjAwOTk1MzkzYTNjMzQ3M2ExYjQ4ODRkYjdkYjEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.DAgjwtgrAARPOWR6yEm8y5Y4WCaiuTLJXv2T0-2Pk0Q" width="32%"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/31227919/563704492-ed43197f-bcc1-40ef-80e2-1dd7c02afc81.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjQ0MzcsIm5iZiI6MTc4NTMyNDEzNywicGF0aCI6Ii8zMTIyNzkxOS81NjM3MDQ0OTItZWQ0MzE5N2YtYmNjMS00MGVmLTgwZTItMWRkN2MwMmFmYzgxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzI5VDExMjIxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM4MzQ5NGRiNDIyNDYzNmQ4ODNhMjlmMzg2ODg3ZGRkMTZiYTQzYjY0NjZiMDJlYmM0MTM1ZTJlOTQ4ZjRhMWYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.ydVV8dyNS7zUtHWsfVCMTTEU5-JRq1peBPIAT7MuuMQ"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F31227919%2F563704492-ed43197f-bcc1-40ef-80e2-1dd7c02afc81.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjQ0MzcsIm5iZiI6MTc4NTMyNDEzNywicGF0aCI6Ii8zMTIyNzkxOS81NjM3MDQ0OTItZWQ0MzE5N2YtYmNjMS00MGVmLTgwZTItMWRkN2MwMmFmYzgxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzI5VDExMjIxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM4MzQ5NGRiNDIyNDYzNmQ4ODNhMjlmMzg2ODg3ZGRkMTZiYTQzYjY0NjZiMDJlYmM0MTM1ZTJlOTQ4ZjRhMWYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.ydVV8dyNS7zUtHWsfVCMTTEU5-JRq1peBPIAT7MuuMQ" width="32%"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/31227919/563704535-a454f0a3-08fa-4f49-96a7-ef5f736e29c4.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjQ0MzcsIm5iZiI6MTc4NTMyNDEzNywicGF0aCI6Ii8zMTIyNzkxOS81NjM3MDQ1MzUtYTQ1NGYwYTMtMDhmYS00ZjQ5LTk2YTctZWY1ZjczNmUyOWM0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzI5VDExMjIxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJjYmZkYjcwNDZiNGE1MjJkNmE1MGEzODMxNjcyNjYwMDhkNjhmZDMxYmQ5YmE3ZTNiMjFlZTdjN2JjM2VlYmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.qr6Q_q2HiK9Xebjp1JPOM6RrcL6fVDZaxs-u883imNk"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F31227919%2F563704535-a454f0a3-08fa-4f49-96a7-ef5f736e29c4.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjQ0MzcsIm5iZiI6MTc4NTMyNDEzNywicGF0aCI6Ii8zMTIyNzkxOS81NjM3MDQ1MzUtYTQ1NGYwYTMtMDhmYS00ZjQ5LTk2YTctZWY1ZjczNmUyOWM0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzI5VDExMjIxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJjYmZkYjcwNDZiNGE1MjJkNmE1MGEzODMxNjcyNjYwMDhkNjhmZDMxYmQ5YmE3ZTNiMjFlZTdjN2JjM2VlYmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.qr6Q_q2HiK9Xebjp1JPOM6RrcL6fVDZaxs-u883imNk" width="32%"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/31227919/563704613-433c4b85-f2d5-4f12-9d7d-db97324dc550.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjQ0MzcsIm5iZiI6MTc4NTMyNDEzNywicGF0aCI6Ii8zMTIyNzkxOS81NjM3MDQ2MTMtNDMzYzRiODUtZjJkNS00ZjEyLTlkN2QtZGI5NzMyNGRjNTUwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzI5VDExMjIxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJhN2Q5ZGY4NDAxYTNjOGUyM2M1NGJlZjUyOWYxNjllY2ZlY2IzYTU2ZDYwMGZiYWQ3ZmE2MjBlMmM4ZGUxN2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.WWrBR5FJVgi827-xIfcQD5VdVheo5879dQfJKhe02ms"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F31227919%2F563704613-433c4b85-f2d5-4f12-9d7d-db97324dc550.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjQ0MzcsIm5iZiI6MTc4NTMyNDEzNywicGF0aCI6Ii8zMTIyNzkxOS81NjM3MDQ2MTMtNDMzYzRiODUtZjJkNS00ZjEyLTlkN2QtZGI5NzMyNGRjNTUwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzI5VDExMjIxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJhN2Q5ZGY4NDAxYTNjOGUyM2M1NGJlZjUyOWYxNjllY2ZlY2IzYTU2ZDYwMGZiYWQ3ZmE2MjBlMmM4ZGUxN2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.WWrBR5FJVgi827-xIfcQD5VdVheo5879dQfJKhe02ms" width="32%"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/31227919/563704638-55d3a674-24bf-4757-9fc4-772d069ad294.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjQ0MzcsIm5iZiI6MTc4NTMyNDEzNywicGF0aCI6Ii8zMTIyNzkxOS81NjM3MDQ2MzgtNTVkM2E2NzQtMjRiZi00NzU3LTlmYzQtNzcyZDA2OWFkMjk0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzI5VDExMjIxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY2ZGJjYmE1YTQ4NjlmNzJmOGJkYjQxZDgzOWJlZWFjZmI2NjQyODBhZTU2YTQ0NjFhOTdmOTBhY2M2M2RiNmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.Xezn8mRrW6KLiaKOQLubZq1OR-mqtS2v1PDjIJpijVk"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F31227919%2F563704638-55d3a674-24bf-4757-9fc4-772d069ad294.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjQ0MzcsIm5iZiI6MTc4NTMyNDEzNywicGF0aCI6Ii8zMTIyNzkxOS81NjM3MDQ2MzgtNTVkM2E2NzQtMjRiZi00NzU3LTlmYzQtNzcyZDA2OWFkMjk0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzI5VDExMjIxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY2ZGJjYmE1YTQ4NjlmNzJmOGJkYjQxZDgzOWJlZWFjZmI2NjQyODBhZTU2YTQ0NjFhOTdmOTBhY2M2M2RiNmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.Xezn8mRrW6KLiaKOQLubZq1OR-mqtS2v1PDjIJpijVk" width="32%"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/31227919/563704668-7bd7f510-da10-492b-961d-f447903bf942.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjQ0MzcsIm5iZiI6MTc4NTMyNDEzNywicGF0aCI6Ii8zMTIyNzkxOS81NjM3MDQ2NjgtN2JkN2Y1MTAtZGExMC00OTJiLTk2MWQtZjQ0NzkwM2JmOTQyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzI5VDExMjIxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJjYWY3M2E2MTU5NDIwYjAzNTYxNDJjZmUwNDU2YWMyNjJhNWMxZDRiNTc0ZGU4NTYzYjg1ZTJmMGI0NDUzZjEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.isapGiJBq-l9wvhVuXub6wimYLY4Un7EpuYmkPFjA2E"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F31227919%2F563704668-7bd7f510-da10-492b-961d-f447903bf942.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjQ0MzcsIm5iZiI6MTc4NTMyNDEzNywicGF0aCI6Ii8zMTIyNzkxOS81NjM3MDQ2NjgtN2JkN2Y1MTAtZGExMC00OTJiLTk2MWQtZjQ0NzkwM2JmOTQyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzI5VDExMjIxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJjYWY3M2E2MTU5NDIwYjAzNTYxNDJjZmUwNDU2YWMyNjJhNWMxZDRiNTc0ZGU4NTYzYjg1ZTJmMGI0NDUzZjEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.isapGiJBq-l9wvhVuXub6wimYLY4Un7EpuYmkPFjA2E" width="32%"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why use it&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Install and uninstall Node.js versions quickly&lt;/li&gt;
&lt;li&gt;Switch global Node.js version with one command/click&lt;/li&gt;
&lt;li&gt;Pin Node.js versions per project&lt;/li&gt;
&lt;li&gt;Keep environments isolated across Node.js versions&lt;/li&gt;
&lt;li&gt;Use GUI or CLI based on your workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Install&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Download from releases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/1111mp/nvm-desktop/releases" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After installation, ensure these are available in terminal:&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;nvmd -V
node -v
npm -v&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Core usage (CLI-first)&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;1) Install a Node.js version&lt;/h3&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;nvmd install 20.18.0&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;2) List installed versions&lt;/h3&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;nvmd ls&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;3) Switch global version&lt;/h3&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;nvmd use 20.18.0
node -v&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;4) Set version for current project&lt;/h3&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;nvmd use 18.20.4 --project
node -v&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;5) Check current version&lt;/h3&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;nvmd current&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;6) Uninstall a version&lt;/h3&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;nvmd uninstall 16.20.2&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;7) Find executable path&lt;/h3&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;nvmd which node
nvmd&lt;/pre&gt;…
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/1111mp/nvm-desktop" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;h2&gt;
  
  
  Screenshot
&lt;/h2&gt;

&lt;p&gt;&lt;iframe src="https://player.vimeo.com/video/888174068" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://player.vimeo.com/video/888174106" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnknyijn8968yq52o11f9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnknyijn8968yq52o11f9.png" alt=" " width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Download and Install
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Download
&lt;/h3&gt;

&lt;p&gt;Download link: &lt;a href="https://github.com/1111mp/nvm-desktop/releases" rel="noopener noreferrer"&gt;nvmd-desktop Download Page (GitHub release)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fignbui7cxusnghagch16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fignbui7cxusnghagch16.png" alt="Release v2.6.0" width="800" height="654"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depending on the platform, download the latest version.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install
&lt;/h3&gt;

&lt;p&gt;After downloading the binary installer for the corresponding platform, double-click to install it.&lt;/p&gt;

&lt;p&gt;Because the program is currently not signed with a certificate through an Apple developer account, a security prompt will appear when running on macOS:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"File/App is damaged and cannot be opened. You should move it to Trash."&lt;/p&gt;

&lt;p&gt;"File/App is damaged and cannot be opened. You should move it to Trash." is a Mac error that can occur to various macOS versions, such as macOS Ventura/Monterey/Big Sur/Catalina, especially on M1 Macs. It usually happens on apps or files downloaded from the web, but it can also arise when opening apps downloaded from App Store.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can check the &lt;strong&gt;nvm-desktop&lt;/strong&gt; &lt;a href="https://github.com/1111mp/nvm-desktop#macos-issues" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; or this article (&lt;a href="https://iboysoft.com/news/app-is-damaged-and-cannot-be-opened.html#:~:text=If%20you%27re%20certain%20the%20file%20or%20app%20is,and%20selecting%20Open%20twice.%204%20Restart%20your%20Mac." rel="noopener noreferrer"&gt;Fix 'File/App is damaged and cannot be opened' on Mac&lt;/a&gt;) to allow the program to run.&lt;/p&gt;

&lt;p&gt;On the Windows platform, you need to trust this software in the firewall.&lt;/p&gt;

&lt;p&gt;Because the project code is completely open source, please feel free to run it. Or you can clone the code to local compile and install according to the tutorial in the &lt;a href="https://github.com/1111mp/nvm-desktop#build-and-package" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start Using
&lt;/h2&gt;

&lt;p&gt;Take the macOS platform as an example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feywsevjmfb5t65o8xoas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feywsevjmfb5t65o8xoas.png" alt=" " width="799" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furbixnt71w4y6yp6s4sv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furbixnt71w4y6yp6s4sv.png" alt=" " width="799" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdbcz9rqurdls2j5udoqu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdbcz9rqurdls2j5udoqu.png" alt=" " width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flkl5sky8xfwtgocrt1o1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flkl5sky8xfwtgocrt1o1.png" alt=" " width="800" height="569"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiotqhe5gm7enqt6mw8wx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiotqhe5gm7enqt6mw8wx.png" alt=" " width="799" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;According to the wizard, the following commands need to be added to the system's &lt;code&gt;~/.bashrc&lt;/code&gt;, &lt;code&gt;~/.profile&lt;/code&gt; or &lt;code&gt;~/.zshrc&lt;/code&gt; files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;NVMD_DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.nvmd"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$NVMD_DIR&lt;/span&gt;&lt;span class="s2"&gt;/bin:&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Under Windows, no additional operations are required. After installation and operation, directly search for the specified Node.js version and click to download and install it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enter the main page&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgxfuhacy0kb99qn5sjtb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgxfuhacy0kb99qn5sjtb.png" alt=" " width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Node.js supports the &lt;code&gt;arm64&lt;/code&gt; architecture of macOS starting from &lt;code&gt;v16.0.0&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu5o78apnym8j4t1my8z0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu5o78apnym8j4t1my8z0.png" alt=" " width="800" height="574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Set different Node.js versions for different projects:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnlyswp1s0fksp4gdh9x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnlyswp1s0fksp4gdh9x.png" alt=" " width="800" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Find the version you need to download and install:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7fuk232nyw8mesntql5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7fuk232nyw8mesntql5.png" alt=" " width="800" height="569"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9q6w6rnovy7gbrebk7j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9q6w6rnovy7gbrebk7j.png" alt=" " width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can check the download progress in real time or cancel the download.&lt;/p&gt;

&lt;p&gt;After installation, click the &lt;strong&gt;Apply&lt;/strong&gt; button to set it to the current Node.js version:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz1bxykhac3p520z95cgs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz1bxykhac3p520z95cgs.png" alt=" " width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check if it works by typing &lt;code&gt;node --version&lt;/code&gt; &amp;amp; &lt;code&gt;npm --version&lt;/code&gt; in the terminal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Command Tool
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;nvmd&lt;/code&gt; allows you to quickly manage different versions of Node.js through the command line (&lt;code&gt;nvmd&lt;/code&gt; does not provide the download and installation function of Node.js. If you need to download and install a new version of Node.js, please open the &lt;code&gt;nvm-desktop&lt;/code&gt; application):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;nvmd use 18.17.1
Now using node v18.17.1
&lt;span class="nv"&gt;$ &lt;/span&gt;node &lt;span class="nt"&gt;-v&lt;/span&gt;
v18.17.1
&lt;span class="nv"&gt;$ &lt;/span&gt;nvmd use v20.5.1 &lt;span class="nt"&gt;--project&lt;/span&gt;
Now using node v20.5.1
&lt;span class="nv"&gt;$ &lt;/span&gt;node &lt;span class="nt"&gt;-v&lt;/span&gt;
v20.5.1
&lt;span class="nv"&gt;$ &lt;/span&gt;nvmd &lt;span class="nb"&gt;ls
&lt;/span&gt;v20.6.1
v20.5.1 &lt;span class="o"&gt;(&lt;/span&gt;currently&lt;span class="o"&gt;)&lt;/span&gt;
v18.17.1
&lt;span class="nv"&gt;$ &lt;/span&gt;nvmd current
v20.5.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;nvmd --help&lt;/code&gt;：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvmd &lt;span class="o"&gt;(&lt;/span&gt;2.6.0&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;command &lt;/span&gt;tools &lt;span class="k"&gt;for &lt;/span&gt;nvm-desktop

Usage: nvmd &lt;span class="o"&gt;[&lt;/span&gt;COMMAND]

Commands:
  current  Get the currently used version
  list     List the all installed versions of Node.js
  &lt;span class="nb"&gt;ls       &lt;/span&gt;List the all installed versions of Node.js
  use      Use the installed version of Node.js &lt;span class="o"&gt;(&lt;/span&gt;default is global&lt;span class="o"&gt;)&lt;/span&gt;
  which    Get the path to the executable to where Node.js was installed
  &lt;span class="nb"&gt;help     &lt;/span&gt;Print this message or the &lt;span class="nb"&gt;help &lt;/span&gt;of the given subcommand&lt;span class="o"&gt;(&lt;/span&gt;s&lt;span class="o"&gt;)&lt;/span&gt;

Options:
  &lt;span class="nt"&gt;-h&lt;/span&gt;, &lt;span class="nt"&gt;--help&lt;/span&gt;     Print &lt;span class="nb"&gt;help&lt;/span&gt;
  &lt;span class="nt"&gt;-V&lt;/span&gt;, &lt;span class="nt"&gt;--version&lt;/span&gt;  Print version

Please download new version of Node.js &lt;span class="k"&gt;in &lt;/span&gt;nvm-desktop.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After you switch the Node.js version through the &lt;strong&gt;nvmd&lt;/strong&gt; use command line, please click the refresh button to let &lt;strong&gt;nvm-desktop&lt;/strong&gt; synchronize the latest data.&lt;/p&gt;

&lt;p&gt;See this documentation for more details: &lt;a href="https://github.com/1111mp/nvmd-command#command-tools-intro" rel="noopener noreferrer"&gt;command-tools-intro&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set Node versions individually for projects
&lt;/h3&gt;

&lt;p&gt;It does not rely on the functions and shell of the operating system, and perfectly supports switching different Node.js versions for the project, and there is no need to restart the terminal after switching.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft23vzcmbyb3rpyfrflcu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft23vzcmbyb3rpyfrflcu.png" alt=" " width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click the Add Project button, select the project directory, and then select the required version of Node.js (already installed) for the project.&lt;/p&gt;

&lt;p&gt;After selecting a version, a &lt;code&gt;.nvmdrc&lt;/code&gt; file will be added to the root directory of your project, containing the selected version number. &lt;code&gt;nvm-desktop&lt;/code&gt; sets the version of Node.js for the terminal through this file. Open your terminal and go to the project directory, and run &lt;code&gt;node --version&lt;/code&gt; to see if it works.&lt;/p&gt;

&lt;p&gt;The globally set Node.js version is &lt;code&gt;v20.6.1&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1vbdeim7bvfxoomt7zmj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1vbdeim7bvfxoomt7zmj.png" alt=" " width="800" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Set the &lt;code&gt;v20.5.0&lt;/code&gt; version for the project:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fylaqvi2sroo5x5y9eb17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fylaqvi2sroo5x5y9eb17.png" alt=" " width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check in the root directory of the project in the terminal:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftu2e8z24p6cm3390h9uf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftu2e8z24p6cm3390h9uf.png" alt=" " width="800" height="163"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Quickly manage Node.js versions through the system tray menu
&lt;/h3&gt;

&lt;p&gt;Avoid frequently opening interface windows and quickly switch Node.js versions through menu bar options.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;macOS&lt;/code&gt;:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frn8zl12czn70cohezuoh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frn8zl12czn70cohezuoh.png" alt=" " width="799" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Windows&lt;/code&gt;:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4oisodb7l8d367f24pm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4oisodb7l8d367f24pm.png" alt=" " width="390" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Synchronize the latest released Node.js version
&lt;/h3&gt;

&lt;p&gt;Because all Node.js version information data will be cached by default, if you want to view the latest released Node.js version, click the &lt;code&gt;Remote Refresh&lt;/code&gt; button to synchronize the latest data (You can view it through the official link:&lt;a href="https://nodejs.org/dist/index.json" rel="noopener noreferrer"&gt;https://nodejs.org/dist/index.json&lt;/a&gt;):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7tbzao62xi5prgcki25m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7tbzao62xi5prgcki25m.png" alt=" " width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Custom download mirror address
&lt;/h3&gt;

&lt;p&gt;The default download mirror address is &lt;a href="https://nodejs.org/dist" rel="noopener noreferrer"&gt;https://nodejs.org/dist&lt;/a&gt;. If the download speed is slow in your area, then you can change the download address that suits you to download quickly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Floec8rn7ke3kinsue1b8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Floec8rn7ke3kinsue1b8.png" alt=" " width="800" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Change the installation path of Node.js
&lt;/h3&gt;

&lt;p&gt;The default installation path is: &lt;code&gt;$HOME/.nvmd/versions&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwadb9xfzuoucejvwxr6m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwadb9xfzuoucejvwxr6m.png" alt=" " width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Multi-Language and Multi-Theme
&lt;/h3&gt;

&lt;p&gt;Multi-language currently supports English and Simplified Chinese:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkmtf6rgvfs5id0jy4jmm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkmtf6rgvfs5id0jy4jmm.png" alt=" " width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The theme currently supports three modes: &lt;code&gt;follow system&lt;/code&gt;, &lt;code&gt;light&lt;/code&gt; and &lt;code&gt;dark&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk9mvnfpndow17s40slok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk9mvnfpndow17s40slok.png" alt=" " width="800" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Installed Interface
&lt;/h3&gt;

&lt;p&gt;Quickly find the installed and currently used version of Node.js on the installed interface for easy management.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9160f90rzld4q5ceawh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9160f90rzld4q5ceawh.png" alt=" " width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  View the Node.js release log
&lt;/h3&gt;

&lt;p&gt;By clicking the version number of Node.js on the main interface, you can jump to the officially released &lt;code&gt;Changelog interface&lt;/code&gt; of the corresponding version (keep track of the trends of the new version at any time):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxkqxp0ynszeyup87it0n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxkqxp0ynszeyup87it0n.png" alt=" " width="800" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  At Last
&lt;/h2&gt;

&lt;p&gt;Hope you enjoy this project I shared. Thank you. 😃&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Github&lt;/code&gt; link：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/1111mp/nvm-desktop" rel="noopener noreferrer"&gt;nvm-desktop&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Download link：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/1111mp/nvm-desktop/releases" rel="noopener noreferrer"&gt;nvmd-desktop Download Page (GitHub release)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>opensource</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
