מה ההבדל בין npm create ל npx?
מה ההבדל בין npm create ל npx ? ולמה בשביל ליצור פרויקט חדש אני מפעילה npm create אבל בשביל להריץ שרת מקומי זה npx static-server? אפשר לוותר על אחד מהם?
אם יש משהו ש npm יודעים לעשות זה להוסיף עוד ועוד פקודות וקיצורים לפקודות שעושים דברים מאוד דומים. בואו נראה מה הסיפור של npx ו npm create.
תחילה npx: זה כלי שמגיע יחד עם node ותפקידו להריץ פקודה מתוך חבילת npm. הכלי npx נוצר אחרי שגילינו שזה מתסכל להתקין חבילה רק בשביל להפעיל כלי מסוים מתוכה, ולמעשה היום הוא מריץ את הפקודה exec המובנית ב npm (זה לא התחיל ככה, npm exec נוצרה רק בגירסה 7 של npm אבל npx היה איתנו הרבה קודם). השימוש ב npx איפשר פיתוח והפצה נרחבים של כלי שורת פקודה בתור חבילות npm, ובגלל זה אנחנו אוהבים להריץ שרת מקומי בעזרתו וגם לצייר פרה:
npx cowsay hello
הפקודה השניה, npm create היא למעשה קיצור דרך לפקודת npm init הישנה והטובה. פקודת init נוצרה כדי ליצור מהר קבצי package.json, דרך מענה על מספר שאלות מובנות. היא איפשרה יצירה מהירה של פרויקטים חדשים ב node במקום שנעתיק קובץ package.json כל פעם מפרויקט אחר. החל מגירסה 6.1 פקודת init הסכימה לקבל שם של חבילה שתהיה אחראית על יצירת הפרויקט. באופן אוטומטי init מוסיפה את התחילית create לשם שנתנו לה, מחפשת חבילה ב npm בשם הזה ומפעילה אותה עם npx, כלומר כשאני כותב:
npm create vite hello-world
אני בעצם מריץ את הפקודה:
npx create-vite hello-world