כלי סביבת העבודה

הרצה וניפוי באגים

Gitcito קורא את .vscode/launch.json שלכם — זה שבשורש וכל אלה שמקוננים בתוכו, מקובצים עם מפרידים — ומריץ את התצורה שתבחרו בטרמינל המשולב.

בורר ההפעלה וסרגל הכלים הצף

  • משתני VS Code נפתרים (${workspaceFolder} וחבריו).
  • ה־preLaunchTask של תצורה רץ ראשון.
  • ערכי ${input:…} נשאלים באופן אינטראקטיבי לפני ההפעלה (promptString ו־pickString). pickString מציג את האפשרויות כבורר אמיתי עם ברירת המחדל מסומנת מראש; promptString שמסומן password מוסתר בהקלדה.
  • משימות isBackground (צופים, שרתי פיתוח) רצות מנותקות, ולכן הן לעולם אינן חוסמות את ההפעלה.
  • compounds מריצים כל חבר כסשן מקבילי משלו — בטרמינל מפוצל אחד שנושא את שם ה‑compound, חלונית לכל חבר, בדיוק כמו סשני הדיבוג של VS Code. עם stopAll: true, עצירת חבר אחד עוצרת את כולם. משימות שכמה חברים חולקים רצות פעם אחת, בחלונית משלהן, לפני שהחברים מתחילים — בקשת העלאת גרסה שואלת פעם אחת, לא פעם לכל חבר. החלונית הזו נסגרת מעצמה בהצלחה ונשארת פתוחה בכישלון.
  • serverReadyAction נתמך: כשפלט הסשן תואם לתבנית שהוגדרה, כתובת ה‑URL שהוכרזה נפתחת בדפדפן (openExternally; גם debugWithChrome / debugWithEdge רק פותחים את הדפדפן — Gitcito לא יכול לחבר אליו מנפה).

compound שמריץ שני סשנים מקביליים

בורר ה‑${input} עם ברירת המחדל מסומנת

סרגל כלים צף נותן לכם השהיה / המשך, הפעלה מחדש, עצירה, ומחליף בין סשנים רצים.

הפעילו את זה בהגדרות ← כללי ← הפעלת launch.json. כפתור הפעלה מופיע לצד הלשוניות Git / קבצים.

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

מה ש‑Gitcito בכוונה לא עושה: הוא מריץ את התוכניות שלך בטרמינלים אמיתיים, אבל הוא לא מנפה — בלי נקודות עצירה, בלי בדיקת משתנים, בלי Debug Adapter Protocol. תצורות attach בלבד עובדות כשהן נושאות preLaunchTask (המשימה היא העבודה); ל‑attach טהור אין מה להריץ.

פעולות חמות — הדרך המהירה לצד «הפעלה מחדש»

טעינה חמה שנשלחה משורת הניפוי

רוב סביבות הפיתוח כבר טוענות מחדש בהקשה אחת: flutter run ב‑r, ‏Metro ב‑r, ‏nodemon ב‑rs ⏎, ו‑Vitest מריץ מחדש את החבילה ב‑a. להפעיל מחדש את תצורת ההרצה כדי להשיג את אותו הדבר היא הדרך האיטית — היא הורגת את התהליך, מריצה שוב כל preLaunchTask וזורקת את מצב האפליקציה.

לכן Gitcito קורא את הפקודה שהתצורה באמת מריצה — עוקב אחרי npm run dev עד הסקריפטים שב‑package.json — ומעלה את מקשי אותה סביבה לשורת הניפוי. לחיצה כותבת את המקש לקלט התקני של ההפעלה, בדיוק כאילו הקלדתם אותו בטרמינל בעצמכם.

סביבה כפתורים מאחורי ⋯
Flutter (flutter run) טעינה חמה r, הפעלה חוזרת חמה R debug paint, שכבת ביצועים, החלפת פלטפורמה, DevTools
Expo טעינה מחדש r תפריט מפתחים, מנפה שגיאות
Metro / React Native טעינה מחדש r תפריט מפתחים, מנפה שגיאות
Vite (dev, serve, preview) הפעלת השרת מחדש r ⏎ פתיחה בדפדפן, הצגת כתובות, ניקוי המסוף
nodemon הפעלה מחדש rs ⏎ —
Vitest (מצב watch) הרצת הכול a, הרצת הנכשלות f עדכון תצלומי מצב
Jest (--watch) הרצת הכול a, הרצת הנכשלות f קבצים שהשתנו בלבד, עדכון תצלומי מצב
Mocha (--watch) הרצה מחדש rs ⏎ —
AVA (--watch) הרצת הכול r ⏎, עדכון תצלומי מצב u ⏎ —
dotnet watch אילוץ הפעלה מחדש Ctrl+R —
Wrangler (wrangler dev) פתיחה בדפדפן b DevTools, מקומי/מרוחק, ניקוי המסוף

סביבות שטוענות מחדש מעצמן לא מקבלות כפתורים — node --watch, ng serve, tsc --watch, cargo watch, next dev, webpack-dev-server. כפתור ששולח מקש שאיש אינו קורא גרוע מהיעדר כפתור, כי הוא נראה כאילו עבד.

המגבלות. הזיהוי טקסטואלי: הוא מתאים את שם התוכנית בשורת הפקודה, ולכן תצורה שמפעילה את שרת הפיתוח דרך סקריפט עוטף ש‑Gitcito אינו יכול לקרוא לא תקבל כלום. גם אין אישור קבלה להקשה — הכפתור מהבהב, והתשובה האמיתית היא הפלט של התהליך עצמו. הפעלה מושהית או שהסתיימה אינה מקבלת קלט, ולכן הכפתורים מעומעמים.

כשהניחוש שגוי, אמרו זאת בתצורה עצמה:

{
  "name": "API (watch)",
  "type": "node-terminal",
  "command": "./scripts/dev.sh",
  "gitcito": { "hotActions": [{ "label": "Reload", "send": "r", "icon": "reload" }] }
}

‏send נכתב כלשונו — סיימו אותו ב‑\n עבור CLI שממתין ל‑Enter. ‏icon הוא רשות: reload, restart, rerun, failed, snapshot, menu, debugger, browser, clear, paint, perf, platform, devtools, urls. מערך hotActions ריק מכבה את הכפתורים עבור אותה תצורה.

יעד הרצה — על איזה מכשיר תצורה מופעלת

בחירת יעד ההרצה לצד לשונית LAUNCH

לתצורה שבונה אפליקציה לנייד צריך להגיד איפה להריץ אותה. הבחירה הזאת אינה של Flutter בלבד — ‏React Native, ‏Expo, ‏Capacitor ו‑xcodebuild מקבלים כולם יעד, וכל אחד כותב אותו אחרת. לכן Gitcito שואל פעם אחת, ליד לשונית LAUNCH, וכותב את התשובה בצורה שסביבת הריצה של אותה תצורה קוראת. הבורר מופיע רק כאשר תצורה כלשהי במאגר באמת יכולה לקבל מכשיר.

מאיפה מגיעה הרשימה — מכלי ה‑SDK שיש על המחשב, בשאילתה מקבילה:

כלי תורם מתי נשאל
flutter devices / flutter emulators הכול, כבר מנורמל כשיש בתיקייה pubspec.yaml
xcrun simctl סימולטורי iOS, פעילים וכבויים ב‑macOS
adb devices מכשירי Android ואמולטורים שכבר עלו תמיד
emulator -list-avds אמולטורי Android שעדיין כבויים תמיד

אותו סימולטור מדווח על ידי עד שלושה מהם, ולכן הרשומות ממוזגות לפי פלטפורמה ושם; בתיקו Flutter מנצח, כי המזהה שלו הוא זה ש‑flutter run -d מצפה לו. כלים שאינם מותקנים מופיעים בשמם בתחתית התפריט — רשימה קצרה צריכה להסביר את עצמה.

מה הבחירה עושה:

משפחה נכתב כ־
Flutter -d <id>
React Native iOS --udid <id>
React Native Android --deviceId=<id>
Expo run:ios / run:android --device <id>
Capacitor / Ionic --target <id>
xcodebuild -destination id=<id>
כל השאר משתני סביבה בלבד

כל תצורה שמופעלת מקבלת גם GITCITO_DEVICE_ID, ‏GITCITO_DEVICE_NAME ו‑ GITCITO_DEVICE_PLATFORM בסביבה שלה, ובנוסף ANDROID_SERIAL כשהיעד הוא מכשיר Android אמיתי. זה מה שמאפשר לסקריפט עוטף, למשימת Gradle או ל‑adb חשוף לפגוע באותו מכשיר בלי ש‑Gitcito יכתוב מחדש שום דבר.

הפעלת מכשיר כבוי. כל מה שתחת לא פועל עולה כשבוחרים בו: ‏flutter emulators --launch, ‏xcrun simctl boot (ועוד חלון ה‑Simulator), או ‏emulator -avd מנותק — כך שיציאה מ‑Gitcito לא לוקחת איתה את אמולטור ה‑Android.

המגבלות. תצורה שכבר נוקבת במכשיר — ‏-d מפורש, ‏--simulator, או ‏deviceId של Dart‑Code — נשארת כמות שהיא: הבורר לעולם אינו דורס את מה שהמחבר כתב. מזהה שהיה דורש מרכאות נופל אל משתני הסביבה במקום להסתכן בשורת פקודה שבורה. התפריט מסונן לפי מה שהתצורות שלכם יכולות להגיע אליו, ולכן מאגר של Android בלבד לעולם לא יציע לכם אייפון. והרשימה היא תצלום רגע: חברו טלפון ולחצו רענון המכשירים.

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

ראו גם: טרמינל משולב

ערכי קלט מקובצי JSON ו-YAML

שדה יכול להציג את הגרסה הנוכחית או לקבל ערך התחלתי מקובץ הפרויקט. Gitcito קורא את הקובץ בכל הפעלה, לפני הצגת השדות. אין צורך בתוסף VS Code.

הוסיפו fileValues לשדה promptString או pickString. כל ערך מגדיר נתיב יחסי לתיקיית הגדרות ההפעלה ומאפיין המופרד בנקודות. השתמשו ב-${fileValue:name} בתוך description או default. ערך default ריק משאיר את השדה אופציונלי.

{
  "id": "version",
  "type": "promptString",
  "description": "Current: ${fileValue:version} (${fileValue:build})",
  "default": "",
  "fileValues": {
    "version": { "file": "version.yaml", "key": "settings.base.MARKETING_VERSION" },
    "build": { "file": "version.yaml", "key": "settings.base.CURRENT_PROJECT_VERSION" }
  }
}

נתמכים קובצי JSON, YAML ו-YML בתיקייה עד 1 MiB, וערכי טקסט, מספרים ובוליאנים. קבצים חסרים, נתונים לא תקינים, מאפיינים חסרים ונתיבים חיצוניים עוצרים את ההפעלה עם שגיאה. לא מופעלים פקודות או ביטויי JavaScript. כל הפעלה חדשה קוראת שוב את הקבצים; Restart משתמש בתשובות הקודמות. VS Code אינו פותר את שדות Gitcito האלה באופן מובנה.

שיפור התרגום הזה ב־GitHub