fnm vs nvm
nvm (Node Version Manager) হলো সবচেয়ে পরিচিত Node.js ভার্সন ম্যানেজার, কিন্তু fnm এর সাথে তুলনা করলে বেশ কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে।
দ্রুত তুলনা
| ফিচার | fnm | nvm |
|---|---|---|
| ভাষা | Rust | Bash |
| স্টার্টআপ গতি | মিলিসেকেন্ড | সেকেন্ড |
| ক্রস-প্ল্যাটফর্ম | ✅ macOS, Windows, Linux | ❌ শুধুমাত্র macOS/Linux |
| ইনস্টলেশন | সিঙ্গেল ফাইল | স্ক্রিপ্ট ক্লোন |
| অটোমেটিক সুইচিং | ✅ .node-version এবং .nvmrc | ✅ শুধুমাত্র .nvmrc |
| শেল সমর্থন | Bash, Zsh, Fish, PowerShell | Bash, Zsh |
| ডিস্ক ব্যবহার | ~10MB | ~5MB |
| ডিপেন্ডেন্সি | নেই | Bash, curl/wget |
পারফরম্যান্স তুলনা
স্টার্টআপ গতি
fnm Rust দিয়ে তৈরি, তাই এর স্টার্টআপ গতি nvm এর চেয়ে অনেক দ্রুত:
bash
# fnm স্টার্টআপ
time fnm env
# আউটপুট: ~0.01s
# nvm স্টার্টআপ
time nvm use
# আউটপুট: ~0.5-2sভার্সন সুইচিং গতি
bash
# fnm ভার্সন সুইচ
time fnm use 20
# আউটপুট: ~0.05s
# nvm ভার্সন সুইচ
time nvm use 20
# আউটপুট: ~0.5-2sফিচার তুলনা
ইনস্টলেশন পদ্ধতি
bash
# সিঙ্গেল ফাইল ডাউনলোড
curl -fsSL https://fnm.vercel.app/install | bashbash
# Git ক্লোন এবং স্ক্রিপ্ট রান
git clone https://github.com/nvm-sh/nvm.git ~/.nvm
cd ~/.nvm && ./install.shকনফিগারেশন
bash
# সরল কনফিগারেশন
eval "$(fnm env --use-on-cd)"bash
# জটিল কনফিগারেশন
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"ভার্সন ফাইল সমর্থন
fnm .node-version এবং .nvmrc উভয় ফাইল সমর্থন করে, এবং package.json এর engines.node ফিল্ডও পড়তে পারে:
bash
# fnm সমর্থন করে
.node-version ✅
.nvmrc ✅
package.json ✅ (engines.node)
# nvm সমর্থন করে
.node-version ❌
.nvmrc ✅
package.json ❌অটোমেটিক ভার্সন সুইচিং
fnm এর --use-on-cd ফিচার nvm এর চেয়ে অনেক দ্রুত:
bash
# fnm - দ্রুত, মিলিসেকেন্ড
eval "$(fnm env --use-on-cd)"
# nvm - ধীর, সেকেন্ড
# .nvmrc ফাইল থাকলে অটোমেটিক্যালি সুইচ করে, কিন্তু ধীরপ্ল্যাটফর্ম সমর্থন
Windows সমর্থন
- fnm: ✅ সম্পূর্ণ সমর্থন, PowerShell এবং CMD উভয়ই
- nvm: ❌ অফিসিয়াল Windows সমর্থন নেই (nvm-windows একটি পৃথক প্রজেক্ট)
মাল্টি-শেল সমর্থন
- fnm: Bash, Zsh, Fish, PowerShell
- nvm: Bash, Zsh
মাইগ্রেশন গাইড
যদি আপনি nvm থেকে fnm এ মাইগ্রেট করতে চান:
1. nvm আনইনস্টল করুন
bash
# nvm ডিরেক্টরি মুছুন
rm -rf ~/.nvm
# শেল কনফিগারেশন থেকে nvm-সম্পর্কিত কোড সরান2. fnm ইনস্টল করুন
bash
curl -fsSL https://fnm.vercel.app/install | bash3. শেল কনফিগার করুন
bash
eval "$(fnm env --use-on-cd)"4. Node.js ভার্সন পুনরায় ইনস্টল করুন
bash
# আপনার প্রয়োজনীয় ভার্সন ইনস্টল করুন
fnm install --lts
fnm install 20
fnm install 185. গ্লোবাল প্যাকেজ পুনরায় ইনস্টল করুন
bash
# nvm থেকে গ্লোবাল প্যাকেজ তালিকা দেখুন
nvm use 20
npm list -g --depth=0
# fnm এ পুনরায় ইনস্টল করুন
fnm use 20
npm install -g <package>সুবিধা এবং অসুবিধা
fnm
সুবিধা:
- 🚀 অত্যন্ত দ্রুত স্টার্টআপ এবং এক্সিকিউশন
- 🔄 ক্রস-প্ল্যাটফর্ম সমর্থন (macOS, Windows, Linux)
- 🐚 মাল্টি-শেল সমর্থন (Bash, Zsh, Fish, PowerShell)
- 📦 সিঙ্গেল ফাইল ইনস্টলেশন, কোনো ডিপেন্ডেন্সি নেই
- 🎯
.node-versionএবং.nvmrcসমর্থন - 🔧
package.jsonengines.nodeসমর্থন
অসুবিধা:
- 📊 nvm এর তুলনায় কম জনপ্রিয়
- 📚 সম্প্রদায়ের ডকুমেন্টেশন এখনো উন্নত হচ্ছে
nvm
সুবিধা:
- 📊 দীর্ঘ ইতিহাস, ব্যাপকভাবে ব্যবহৃত
- 📚 সম্পূর্ণ ডকুমেন্টেশন এবং সম্প্রদায় সমর্থন
- 🔧 পুরানো Node.js ভার্সনের ভালো সমর্থন
অসুবিধা:
- 🐢 ধীর স্টার্টআপ এবং এক্সিকিউশন
- ❌ Windows সমর্থন নেই
- 📦 ইনস্টলেশন জটিল
- 🐚 শুধুমাত্র Bash/Zsh সমর্থন
উপসংহার
- যদি আপনি Windows ব্যবহার করেন: fnm আপনার একমাত্র বিকল্প
- যদি আপনি দ্রুত গতি চান: fnm nvm এর চেয়ে অনেক দ্রুত
- যদি আপনি মাল্টি-শেল সমর্থন চান: fnm Fish এবং PowerShell সমর্থন করে
- যদি আপনি পুরানো ভার্সনের সমর্থন চান: nvm এখনো ভালো
সম্পর্কিত লিংক
- fnm ইনস্টল করুন - fnm ইনস্টলেশন গাইড
- কমান্ড রেফারেন্স - সকল কমান্ডের বিবরণ
- ভার্সন ম্যানেজমেন্ট - ভার্সন ম্যানেজমেন্ট গাইড