یاد میگیرم، تجربه میکنم، اشتباه میکنم و این چرخه من است تا این که موفق شوم.
آموزش نصب همزمان چند نسخه مختلف node js با nvm
وقتی چند پروژه داشته باشیم که یکی قدیمی هست و یکی جدید یا این که بخواهیم پروژه رو با نسخههای مختلف test کنیم که مشکل اجرایی نداشته باشه و از این دست موارد، نیاز به ابزاری هستکه با اون بتونیم نسخههای مختلف node رو همزمان نصب کنیم تا هر وقت خواستیم از یکی از نسخهها استفاده کنیم. nvm ابزاری هست که خیلی ساده و خوب این مسئله رو برای ما هندل میکنه.
امکان نصب و استفاده از nvm روی محیطهای unix, macOS, and windows WSL وجود داره. اگر کاربر خانواده لینوکس باشید که میتونید مستقیم به مرحله بعد برید ولی اگر کاربر windows هستید لازم هست ابتدا WSL رو نصب و راه اندازی کنید.
توضیح بیشتر درباره WSL برای کابران ویندوز
WSL یا همون Windows Subsystem for Linux بعنی داشتن لینوکس در ویندوز. شما ویندوز خودتون رو دارید و هم زمان میتونید لینوکس رو هم در ترمینالهای خودتون در پس زمینه داشته باشید و با دستوراتی به اون ورود کنید یا از اون بخواهید یکسری عملیات رو تحت لینوکس روی سیستم عامل ویندوز فعلی خودتون اجرا کنه. چیزی شبیه VMware هست با این تفاوت که خیلی سریع اجرا میشه و در ترمینالهای تحت ویندوز در دسترس هست. در (ایــنجا) قدم به قدم گفته چطور نصب و راه اندازی کنید و اگر اهل ویدیو دیدن هستید ( این اموزش یوتیوب) کمکتون میکنه.
در کل کار سختی نیست، ویندوز خودتون رو آپدیت میکنید بعد از بخش turn windows features on or off دو گزینه virtual machine platform و Windows Subsystem for Linux رو تیک میزنید تا نصب بشن و بعد از ریاستارت شدن سیستم wsl در دسترس هست. حالا از store ویندوز ubuntu رو دانلود و نصب میکنید و بعد با دستوری که در آموزشها هست اون رو به wsl 2 تغییر بدید تا از قابلیتهای بیشترش استفاده کنید.
این NVM چطور کار می کنه؟
بعد از نصب nvm و نسخه های node مورد نظرتون (با دستورات زیر) در هر لحظه یکی از نسخه ها نودی که خودتون انتخاب کردید فعال میشه و هر دستوری بنویسید با اون نسخه اجرا میشه و لازم نیست در دستورات اجرایی خودتون تغییر ایجاد کنید. سویچ بین نسخهها تنها به اجرا یک دستور نیاز داره. برای مثال اگر دستور node -v رو اجرا کنید و v14.16.1 رو نمایش بده اگر دستور nvm use 12.22.1 رو اجرا کنی و بعد دوباره node -v رو اجرا کنی این بار می بینی که v12.22.1 رو نمایش میده که نشون میده نسخه نود فعال تغییر کرده.
نصب و راه اندازی nvm
اگر میخواهید nvm رو روی macOS M1 Silicon نصب کنید قبلش این مطلب رو بخونید.
با دستور زیر nvm نصب میشه اما این برای مثال هست و بهتره برید به صفحه گیتهاب nvm و دستور نصب نسخه جدیدش که مشابه دستور زیر هست رو کپی کنید و در ترمینال خودتون اجرا کنید.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
دستور زیر رو اجرا کنید و اگر nvm نمایش داده شد که هیچ اگر نشد لازم هست سیستم رو ریاستارت کنید.
command -v nvm
نصب nvm و نسخههای مختلف node js
برای نصب آخرین نسخه LTS دستور زیر رو اجرا کنید.
nvm install --lts
اگر دستور زیر رو اجرا کنید مشخصات نسخههای نصب شده رو میبینید.
nvm ls
برای نصب سایر نسخهها اگر version رو میدونید از دستور بعد و اگر میخواهید لیست نسخههای دردسترس رو ببیند دستور زیر رو اجرا کنید (دریافتش شاید کمی طول بکشه).
nvm ls-remote
برای نصب یک نسخه خاص از دستور زیر استفاده کنید.
nvm install [node version]
### for example (nvm install 12.22.1) for node version 12.22.1
حالا بهتره دستور nvm ls رو اجرا کنید و نسخهها موجود رو ببنید.
تنظیم نسخه پیش فرض node
اگر دستور node -v رو اجرا کنید ورژن نسخه پیش فرض در حال اجرا رو میبنید. برای تغییر نسخه default از دستور زیر استفاده کنید تا هر بار سیستم restart شد به صورت پیش فرض اون برای اجرا اماده بشه.
nvm alias default [node version]
### for example (nvm alias default 12.22.1)
تغییر نسخه node
خب رسیدیم به اصل داستان، با این دستور میشه در هر زمان که دوست داشتید به طور موقت نسخه node فعال رو تغییر بدید (دقت کنید که بعد از restart و بستن ترمینال این انتخاب حذف و نسخه پیش فرض فعال میشه).
nvm use [node version]
### for example (nvm use 12.22.1)
اگر به جای node version کلمه node رو بنویسید (nvm use node) به روزترین نسخه node نصب شده رو واستون فعال میکنه.
حذف یکی از nodeها
برای حذف یکی از نسخههای node js از دستور زیر استفاده کنید.
nvm uninstall [node version]
### for example (nvm uninstall 12.22.1)
جمع بندی
در مستند nvm دستورات و توضیحات بیشتری هست ولی آنچه اصل ماجرا و مهم برای کار با nvm بود همین هایی بود که گفتم و می تونید کار رو با اون شروع کنید و ادامه بدید.
مطلبی دیگر از این انتشارات
کانفیگ کامل ESLint برای React و Next JS
مطلبی دیگر از این انتشارات
جاوا اسکریپت باشیم!
مطلبی دیگر از این انتشارات
شناخت مفاهیم SSR و CSR در React JS