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

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

כדי למנוע את הרצת הסקריפט 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"
  }
}

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

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