18 पॉइंट द्वारा xguru 2024-05-13 | 4 टिप्पणियां | WhatsApp पर शेयर करें
  • मुख्य तुलना के बिंदु: क्रॉस-प्लैटफ़ॉर्म, शुरुआती सेटअप, Node वर्शन का स्रोत, दैनिक उपयोग

Node Version Manager (NVM)

  • GitHub पर 75.2k stars के साथ Node वर्शन प्रबंधन के लिए सबसे लोकप्रिय समाधान
  • शुरुआत में आया और कम्युनिटी में बहुत लोकप्रिय हुआ
  • पूर्ण Windows समर्थन नहीं है, और यह GitBash, Cygwin, WSL आदि में काम करता है
  • Windows के लिए अलग पैकेज nvm-windows है, लेकिन वह स्वयं NVM नहीं है
  • केवल POSIX shell (bash, zsh) को सपोर्ट करता है, इसलिए Fish जैसे यूज़र्स इसमें शामिल नहीं हैं
  • इंस्टॉलेशन एक सरल कमांड से किया जा सकता है
  • .nvmrc फ़ाइल के ज़रिए यह समझ सकता है कि कौन-सा Node.js वर्शन इस्तेमाल करना है
  • nvm use कमांड केवल वर्तमान shell में Node.js वर्शन सेट करती है, इसलिए प्रोजेक्ट फ़ोल्डर छोड़ने के बाद भी वही वर्शन बना रहता है
  • वर्तमान shell के Node.js वर्शन और प्रोजेक्ट के लिए आवश्यक वर्शन के प्रति हमेशा सचेत रहने का बोझ रहता है
  • सभी Node.js वर्शनों को मैन्युअल रूप से प्रबंधित करने से बेहतर है, लेकिन पूरी तरह एकीकृत अनुभव से अभी भी दूर है

N

  • GitHub पर 18.5k stars के साथ लोकप्रिय Node.js वर्शन मैनेजर
  • यह क्रॉस-प्लैटफ़ॉर्म नहीं है और NVM से भी अधिक सीमाएँ हैं
  • Windows native shell, Git for Windows Bash, और Cygwin DLL में काम नहीं करता
  • NPM या Brew के माध्यम से सीधे इंस्टॉल किया जा सकता है, या sh script डाउनलोड करके इंस्टॉल किया जा सकता है
  • package.json के "engines" सेक्शन से सीधे Node वर्शन पहचान सकता है
  • अलग-अलग प्रोजेक्ट्स में सटीक Node.js वर्शन इस्तेमाल करने के लिए इसे स्वयं ट्रैक करना पड़ता है
  • यह "global" Node.js वर्शन को प्रबंधित करता है, इसलिए shell बंद करने के बाद भी आख़िरी प्रोजेक्ट में इस्तेमाल किया गया Node वर्शन बना रहता है

Fast Node Manager (FNM)

  • Rust में लिखा गया Node वर्शन मैनेजर, GitHub पर 15.2k stars
  • सूची में पहला क्रॉस-प्लैटफ़ॉर्म Node वर्शन मैनेजर
  • Windows पर बिना किसी अतिरिक्त पैकेज इंस्टॉल किए चलता है
  • इंस्टॉलेशन प्रक्रिया स्पष्ट और सहज है
  • हर shell के लिए Node.js वर्शन प्रबंधित करता है, और अगर प्रोजेक्ट में कोई निर्धारित वर्शन नहीं है तो "default" वर्शन का उपयोग करता है
  • फ़ोल्डर के आधार पर Node.js वर्शन अपने-आप बदलने की सुविधा है, लेकिन इसके लिए सेटअप करना पड़ता है
  • ऑटो-स्विच सही से काम करे, इसके लिए ज़रूरी Node.js वर्शन पहले से इंस्टॉल होने चाहिए
  • केवल .node-version या .nvmrc फ़ाइलों से Node वर्शन पहचान सकता है

Volta

  • GitHub पर 10k stars के साथ वर्शन मैनेजर दुनिया का उभरता सितारा
  • Rust में लिखा गया है और क्रॉस-प्लैटफ़ॉर्म है
  • Unix-आधारित सिस्टम पर इंस्टॉलेशन प्रक्रिया बहुत सहज है
  • Node.js वर्शन सेट करते समय किसी अतिरिक्त फ़ाइल की आवश्यकता नहीं होती
  • सीधे package.json से सेटिंग्स लेता है
  • "engines" सेक्शन Volta सेटिंग के ठीक पास होता है, इसलिए वर्शनों को आसानी से sync किया जा सकता है
  • toolchain प्रबंधन कर सकता है, इसलिए सिर्फ़ Node.js वर्शन ही नहीं बल्कि Yarn वर्शन भी dynamic रूप से स्विच कर सकता है
  • हर बार इंस्टॉल कमांड चलाने पर यह सुनिश्चित करता है कि Node.js और Yarn वर्शन घोषित वर्शन से मेल खाएँ

PNPM

  • इसे NPM या Yarn के विकल्प के रूप में देखा जाता है, लेकिन यह Node.js वर्शन भी प्रबंधित कर सकता है
  • क्रॉस-प्लैटफ़ॉर्म है और सभी प्लेटफ़ॉर्म पर Node.js वर्शन प्रबंधन का एक जैसा अनुभव देता है
  • Node वर्शन प्रबंधन इसका मुख्य फ़ीचर नहीं है, इसलिए NPM या Yarn के साथ इसका उपयोग करना मुश्किल हो सकता है
  • PNPM से इंस्टॉल किया गया Node.js, Corepack के साथ नहीं आता
  • Node.js वर्शन केवल global रूप से प्रबंधित किए जा सकते हैं, हर shell के लिए अलग से सेट नहीं किए जा सकते
  • प्रोजेक्ट्स के बीच जाने पर यह Node.js वर्शन को dynamic रूप से स्विच नहीं करता, इसलिए इसे स्वयं ट्रैक करना पड़ता है

निष्कर्ष

  • Node.js वर्शन मैनेजर समय के साथ काफ़ी विकसित हुए हैं
  • NVM सबसे पुराना और सबसे लोकप्रिय समाधान था, और अब भी है
  • लेकिन ecosystem विकसित हो रहा है, और N, FNM, Volta जैसे कई टूल सामने आए हैं
  • फिलहाल Volta सबसे ज़्यादा फीचर-समृद्ध और सबसे पूर्ण Node.js वर्शन मैनेजर लगता है
  • Volta क्रॉस-प्लैटफ़ॉर्म है, रोज़मर्रा के उपयोग में सहज अनुभव देता है, और प्रोजेक्ट में इस्तेमाल होने वाले दूसरे टूल भी प्रबंधित करता है

4 टिप्पणियां

 
firea32 2024-05-20

अलग package के तौर पर मैनेज करने के लिए सीखना झंझट लगता है, इसलिए मैं बस brew unlink && brew link node@14 ऐसे ही इस्तेमाल कर रहा हूँ।

 
halfenif 2024-05-14

सब कुछ इतना ज़्यादा है कि उसे गंभीरता से सीखने की इच्छा ही "कमज़ोर" पड़ जाती है।

पहले FileForge में Windows के executable files खंगालने की बात याद करूँ, तो लगता है कि सुविधा अच्छी हो सकती है, लेकिन क्या यह इतनी भी आसान होनी चाहिए?

 
surfindia 2024-05-13

मेरे लिए version manager से अपेक्षित चीज़ performance से ज़्यादा versatility है। उस लिहाज़ से मैं https://github.com/asdf-vm/asdf का काफ़ी संतोषजनक तरीके से उपयोग कर रहा हूँ। plugin के आधार पर node ही नहीं, बल्कि python, ruby, golang आदि सबको मैनेज किया जा सकता है। direnv plugin भी मैं अच्छी तरह इस्तेमाल कर रहा हूँ।

 
kroisse 2024-05-13

Nodenv भी काफ़ी अच्छा विकल्प है, लेकिन उसका ज़िक्र न होना थोड़ा अफ़सोसजनक है। GitHub star 2.2k होने की वजह से शायद उसे बहुत प्रसिद्ध नहीं माना गया और इसलिए बाहर रखा गया लगता है.

क्योंकि यह shell script आधारित है, इसलिए Windows compatibility की कमजोरी NVM या N जैसी ही है। इसके बदले, global Node.js version से अलग folder-आधारित तरीके से Node.js version तय किया जा सकता है, और किसी खास version के Node.js का उपयोग करने वाला नया shell environment भी शुरू किया जा सकता है.