אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » מדריכים » Node.js » nvm – לעבוד עם מגוון סביבות של Node.js

nvm – לעבוד עם מגוון סביבות של Node.js

רן בר-זיק יולי 25, 2021 7:07 am 3 תגובות
כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

אוהבים את מדריך Node.js? רוצים לדעת עוד?

ספר מקיף על Node.js, בעברית, שנכתב על ידי רן בר-זיק וכולל תרגילים רבים ומידע מקיף - גם על מודולים אסינכרוניים וגם על CLI וסטרימים ומידע רב יותר על Node.js ניתן להורדה ממש פה.
כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

מה שהכי יפה בעולם הפיתוח (ובכלל בכל מקצוע) הוא שיש מגדלי ידע שצריך להכיר. כדי לעבוד עם npm למשל, צריך להכיר CLI, כדי להכיר CLI צריך לדעת איך לעבוד עם טרמינל וכדי לעבוד עם טרמינל צריך להכיר טוב חלונות או לינוקס. זה גם מה שמפריד בין מתכנת צעיר יותר למתכנת מנוסה יותר – הידע שכביכול הוא ידע לא רלוונטי משמש כבסיס חשוב ללימוד או הבנה של טכנולוגיה מסוימת.

התחלתי לכתוב כמה מאמרים על npm פרטי שניתן להתקין על רספברי פיי והוא דרך נהדרת לעבוד מקומית עם מודולים של Node.js שאנו לא רוצים להוציא החוצה. בחברות אנו משתמשים במוצר של npm שנקרא private packages או במוצרים רבים וטובים אחרים (אני משתמש בארטיפקטורי של jfrog למשל). אבל בפיתוח ביתי או קטן, שרת יעודי המשמש npm פרטי הוא מאוד שימושי.

במהלך הכתיבה כתבתי על nvm והתכוונתי לקשר למאמר עליו, אך שוד ושבר – גיליתי שלא כתבתי על כך דבר למרות שאני משתמש ב-nvm רוב הזמן. אז הנה – זו הזדמנות למרות שמדובר בידע די טריוויאלי למפתחי Node.js.

הבעיה ש-nvm פותר

כשאנו מתקינים Node.js על המחשב (ולא משנה אם מדובר בחלונות, לינוקס או מק), אנו מתקינים גרסה מסוימת. ל-Node.js יש גרסאות וגם ל-npm שאחראית על תפעול המודולים ולגרסאות יש תכונות ושינויים בין גרסה לגרסה. כך למשל Promise.any שנכנסה לג'אווהסקריפט לאחרונה נתמכת רק ב-Node.js מגרסה 15. אפשר לראות את כל הפיצ'רים שנתמכים בצורה מסודרת באתר node.green.

למה זה חשוב? כי לא מעט פעמים אנו כותבים סקריפט שעובד יפה בסביבה מקומית אבל כשאנו עושים לו דיפלוי לסביבה אחרת – בין אם מחשב של מפתח אחר או בין אם סביבה מרוחקת – דברים עלולים להשבר. ולא, פתרון של "תמיד תעדכן לגרסה החדשה ביותר" לא תמיד אפשרי וגם עלול להיות בעייתי כיוון שיש פיצ'רים שמשנים התנהגות בין גרסה לגרסה ולא תמיד גם הסביבה המרוחקת קלה לשינוי.

על מנת להוסיף על החגיגה – אם אתם עובדים מול כמה סביבות שחלק מהן משתמשות בגרסאות אחרות – צריך לשנות גרסאות כמה פעמים. אם אני כותב סקריפט שאמור לעבוד ב-Node.js V16, אני צריך לשנות את הסביבה שלי לכזו. אבל אם יש לי סביבה אחרת שאני נדרש לכתוב לה סקריפט והיא דווקא עובדת ב Node.js V14 אז אני צריך לשנות את הסביבה שלי לכזו. וזה מקשה על החיים.

הפתרון? nvm, המאפשר שינוי פשוט וקל של גרסאות Node.js על כל מחשב ועל מערכות הפעלה מסוג מק ולינוקס וכן על חלונות עם gitbash,cygwin או WSL.

התקנה

איך מתקינים? פשוט מאוד. אני ממליץ להסיר את Node.js מהמחשב שלכם קודם, למרות שזו לא חובה. ואז לעקוב אחר ההוראות המאוד פשוטות בריפו של nvm. בגדול זה פשוט להקליד:

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

ואז לסגור את הטרמינל ולפתוח אותו שוב. אם נקליד nvm -v נראה שאנו מקבלים גרסה. סימן שהכל עובד. אבל אם נקליד node או npm נגלה שלא מקבלים דבר. למה? כי אנו צריכים להורות ל nvm איזו גרסה להתקין ולהשתמש.

שימוש ראשוני

אנו יכולים להתקין עם nvm כמה גרסאות שאנו רוצים ולבחור בכל פעם בקלות להשתמש במה שבא לנו. בואו ונדגים. נניח שאני רוצה להתקין את גרסה 14 שהיא ה-LTS העדכני של Node.js (למי שלא יודע, ראשי התבות של LTS זה Long Term Support. גרסה שנתמכת לטווח ארוך). אני אקליד:

nvm install 14

ומה שיקרה הוא שהגרסה האחרונה של ה-LTS תותקן לי. במקרה הזה גרסה 14.17.3. ואני אוכל להשתמש בה.

אני יכול להתקין גרסה נוספת. למשל ה-LTS הקודם שהוא 12. אז אני אקליד:

nvm install 12

ואני אעבור להשתמש בה.

אחרי שהגרסאות הותקנו, אפשר לעבור ממש בקלות בינהן עם nvm use. למשל אם אני נמצא בגרסה של Node.js V12 ורוצה לעבור ל-14? אז זה עם:

nvm use v14

איך אני יודע מה הגרסה שאני נמצא בה? עם node -v כרגיל. או הקלדה של nvm ls שמראה את כל הגרסאות שמותקנות והגרסה שמופעלת.

אם רוצים להתקין את ה-latest (הגרסה החדשה ביותר שקיימת ל Node.js) – לא צריך לברר מה המספר שלו. ה-alias של הגרסה החדשה היא node אז כדי להתקין אותה כותבים:

nvm install node

וכדי להשתמש בה כותבים

nvm use node
כלי סטנדרטי ושימושי להפליא לפיתוח Node.js שמאפשר לכל מפתח לעבור גרסת Node.js ממש בקלות

גרסת ברירת מחדל

אם סוגרים את הטרמינל או המחשב ופותחים אותו שוב, הגרסה שתופעל היא הגרסה האחרונה שהשתמשנו בה. כדי לקבוע גרסת ברירת מחדל – כזו שתופעל מייד בכל טרמינל אנו נקליד:

nvm alias default node

או כל גרסה של Node.js שאנו רוצים במקום ה-latest. למשל:

nvm alias default 14

התקנת גרסאות גרנולרית

אם אנו מקלידים רק מספר מייג'ור של גרסה כמו בכל הדוגמאות שהראיתי פה – כמו למשל 14 או 12 – nvm תתקין אוטומטית את הגרסאות החדשות ביותר של המיינור וה-patch. אבל אני יכול לכתוב גם minor. למשל:

nvm install 12.1
nvm use 12.1

ואז ה-patch האחרון יותקן. או לכתוב גרסה מלאה ממש.

הרצה ישירה לפי גרסה

לא חייבים לעבור בין גרסאות בטרמינל. ניתן להריץ ישירות עם כל גרסה מותקנת. למשל:

nvm exec 14 MYSCRIPT

כל מה שיש אחרי הגרסה ירוץ כ-Node.js מהגרסה שציינו. וזה ממש שימושי במיוחד בסקריפטים ישנים. הנה דוגמה ממש נאה:

לסיכום

nvm הפכה לסטנדרט בה"א הידיעה למפתחי Node.js. ויש לה לא מעט פיצ'רים נוספים – למרות שאת העיקריים והשימושיים ביותר סקרתי כאן. באמת זה כלי נהדר להתקנה ולעבודה – בין אם מדובר במחשב הלוקלי או בסביבת פיתוח או בסביבת CI. אם לא הכרתם – אז באמת כדאי להכיר. בחלונות זה טיפה יותר מסובך – אבל אם אתם משתמשים ב-WSL או בנגזרותיו אז חווית השימוש לא תהיה שונה מהותית מלינוקס או ממק.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

אוהבים את מדריך Node.js? רוצים לדעת עוד?

ספר מקיף על Node.js, בעברית, שנכתב על ידי רן בר-זיק וכולל תרגילים רבים ומידע מקיף - גם על מודולים אסינכרוניים וגם על CLI וסטרימים ומידע רב יותר על Node.js ניתן להורדה ממש פה.
למאמר הקודם בסדרת המדריכים על Node.jsnpm-shrinkwrap ככלי לנעילת גרסאות
לכל המאמרים במדריך
node.js תשתית

3 תגובות

  1. רן הגב יולי 25, 2021 בשעה 10:21 am

    וכמובן, שאתה יכול לראות את כל גרסאות ה – node המותקנות אצלך, על ידי nvm ls

  2. שמוליק הגב יולי 25, 2021 בשעה 2:12 pm

    ואף מילה על fnm, ההמצאה הישראלית הכי טובה מאז עגבניות השרי?

    https://github.com/Schniz/fnm

  3. דוד הגב דצמבר 12, 2021 בשעה 9:26 am

    מה לגבי .nvm (דוט nvm) בריפו ? חשוב מאוד

    בנוסף כדאי להוסיף את Node engine בpackage.json

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

    הפרויקטים שאני כותב ושוחררו לציבור ברישיון קוד פתוח נמצאים ברובם בגיטהאב.
חיפוש

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד