הפעלת שלב build בהתאמה אישית

כברירת מחדל, סביבת זמן הריצה של node.js תבצע את הפקודה npm run build אם יזוהה סקריפט build בקובץ package.json. אם אתם צריכים שליטה נוספת בשלבי הבנייה לפני הפעלת האפליקציה, אתם יכולים לספק שלב בנייה בהתאמה אישית. אפשר להוסיף gcp-build לקובץ package.json כדי להריץ שלבי build בהתאמה אישית.

כדי למנוע את הרצת הסקריפט npm run build ב-build, צריך:

  • מוסיפים סקריפט gcp-build עם ערך ריק לקובץ package.json: "gcp-build":"". פרטים על הגדרת package.json זמינים במאמר הגדרות של Node.js buildpacks.
  • מוסיפים את משתנה הסביבה של ה-build‏ GOOGLE_NODE_RUN_SCRIPTS עם ערך ריק לקובץ app.yaml.

    build_env_variables:
      GOOGLE_NODE_RUN_SCRIPTS: ''
    
פרטים נוספים על הגדרת משתני סביבה של build זמינים בקטע build_env_variables בקובץ app.yaml.

כשמריצים את הסקריפט הזה, התלויות בשדות dependencies ו-devDependencies בקובץ package.json זמינות. אחרי שמבצעים את שלב הבנייה המותאם אישית, App Engine מסיר את התיקייה node_modules ויוצר אותה מחדש על ידי התקנה רק של יחסי התלות של הסביבה הפרודקטיבית שהוגדרו בשדה dependencies בקובץ package.json.

מידע נוסף על הגדרת זמן הריצה לשלבי build בהתאמה אישית זמין במאמר ביצוע שלבי build בהתאמה אישית במהלך הפריסה בנושא Node.js buildpacks.

דוגמה

אפשר להשתמש בסקריפט build בהתאמה אישית למשימות עיבוד מקדים, כמו עיבוד מקדים של CSS, הקטנה של JavaScript בצד הלקוח או הפעלת כלים כמו webpack או gulp.

לדוגמה, כדי לקמפל TypeScript ל-JavaScript, קובץ package.json יכול להיראות כך. שימו לב לסקריפט gcp-build:

{
  "name": "appengine-typescript",
  "description": "An example TypeScript app running on Google App Engine.",
  "version": "0.0.1",
  "private": true,
  "license": "Apache Version 2.0",
  "author": "Google Inc.",
  "engines": {
    "node": "20.x"
  },
  "scripts": {
    "prepare": "npm run gcp-build",
    "pretest": "npm run gcp-build",
    "test": "c8 mocha -p -j 2 test/*.test.js --exit",
    "lint": "gts lint",
    "start": "node ./index.js",
    "deploy": "gcloud app deploy",
    "clean": "gts clean",
    "compile": "tsc -p .",
    "fix": "gts fix",
    "build": "tsc -p .",
    "gcp-build": "tsc -p ."
  },
  "dependencies": {
    "@typescript-eslint/parser": "^8.0.0",
    "express": "^4.16.3"
  },
  "devDependencies": {
    "@types/express": "^4.17.17",
    "@types/node": "^20.0.0",
    "c8": "^10.0.0",
    "chai": "^4.5.0",
    "gts": "^5.0.0",
    "mocha": "^10.2.0",
    "typescript": "^5.0.0",
    "wait-port": "^1.0.0"
  }
}

הצגת קבצים סטטיים

כשיוצרים או מעתיקים קבצים במהלך שלב הבנייה בהתאמה אישית, App Engine לא מציג את הקבצים הסטטיים האלה ישירות מהאפליקציה באמצעות הרכיבים static_dir או static_files שמוגדרים בקובץ app.yaml. במקום זאת, App Engine מעלה את הקבצים הסטטיים לתשתית ההצגה בסביבה הרגילה לפני הפעלת שלב הבנייה בהתאמה אישית. כל בקשה לקבצים שנוצרו או הועתקו במהלך שלב הבנייה בהתאמה אישית מובילה לשגיאת HTTP ‏404 NOT FOUND.