התלמוד של המפתחהתלמוד של המפתח

מסכת אבות המפתח

ניהול תלויות

5 הלכות

א

אסור להוסיף תלות לפרויקט אלא אם כן אין ברירה. המוסיף חבילה לדבר שניתן לכתוב בעשר שורות — עוון הוא בידו.

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

מחלוקת
רבי NPM אומר:

יש חבילה לכל דבר — השתמש בה. עמוד על כתפי ענקים ואל תמציא את הגלגל מחדש. חבילה נבדקת, מתוחזקת, ומשוכפלת — עדיפה על קוד מהיר שלך.

רבי ואניל' הטהור חולק ואומר:

כל חבילה שאתה מוסיף היא עול, חוב, ופוטנציאל לחור אבטחה. is-odd יש לו מיליון הורדות — ועדיין מגוחך. כתוב בעצמך כשאפשר.

רבי NPM:

left-pad הייתה שורות ספורות — ושברה אלפי פרויקטים כשנמחקה.

רבי ואניל' הטהור:

בדיוק! תלות שאינה שלך — אינה בשליטתך. זו הנקודה.

תֵּיקוּ

ב

גרסאות התלויות חייבות להיות נעולות. המשתמש ב-* או ב-latest — כאילו בנה על חול.

שכן יבוא יום ותשתנה החבילה, והקוד שעבד אמש — לא יעבוד היום. ודרשו חכמים: ^ מסוכן, ~ פחות — אך נעול לגמרי הוא הבטוח.

ג

חבילה שאינה מתוחזקת מזה שנתיים — בחזקת עזובה היא. השימוש בה על אחריות המפתח בלבד.

בדוק לפני שאתה מייבא: מתי ה-commit האחרון? כמה issues פתוחים? האם יש מחזיק? שכן חבילה עזובה היא חוב טכני הממתין לפרוע.

ד

node_modules אסור בהחלט ב-git. המוסיף אותה ל-commit — חייב להסירה, ולא יצא ידי חובה עד שיוסיף .gitignore כתיקון.

ומעשה היה במפתח שדחף node_modules ל-main בטעות — ויהי ה-PR עם עשרים ושניים אלף קבצים, ויצחקו עליו לדורות.

ה

תלות שהוספת ואינה בשימוש — חובה להסירה. קוד מת בפרויקט הוא נטל, וכל שכן חבילה מתה.

הרואה dependencies של מאה חבילות — ישאל: כמה מהן בשימוש? ולרוב ימצא כי הרבה מהן שריד מפרויקט אחר, או מניסיון שנשכח. ויריץ depcheck ויתמה.