Menjalankan langkah build kustom

Secara default, runtime node.js akan menjalankan npm run build jika skrip build terdeteksi dalam file package.json. Jika Anda memerlukan kontrol tambahan pada langkah-langkah build sebelum memulai aplikasi, Anda dapat memberikan langkah-langkah build kustom. Langkah-langkah build kustom dapat dijalankan dengan menambahkan gcp-build dalam file package.json Anda.

Untuk mencegah build menjalankan skrip npm run build, Anda harus:

  • Menambahkan skrip gcp-build dengan nilai kosong di file package.json Anda: "gcp-build":"". Untuk detail tentang cara mengonfigurasi package.json, lihat konfigurasi buildpack Node.js.
  • Menambahkan variabel lingkungan build GOOGLE_NODE_RUN_SCRIPTS dengan nilai kosong di file app.yaml.

    build_env_variables:
      GOOGLE_NODE_RUN_SCRIPTS: ''
    
Untuk mengetahui detail tentang cara menentukan variabel lingkungan build, lihat bagian build_env_variables dalam file app.yaml.

Saat skrip ini dijalankan, dependensi di kolom dependencies dan devDependencies dari file package.json Anda akan tersedia. Setelah menjalankan langkah build kustom, App Engine akan menghapus dan membuat ulang folder node_modules hanya dengan menginstal dependensi produksi yang dideklarasikan di kolom dependencies pada file package.json Anda.

Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi runtime untuk langkah build kustom, baca Menjalankan langkah build kustom selama deployment untuk buildpack Node.js.

Contoh

Skrip build kustom dapat digunakan untuk tugas pra-pemrosesan, seperti CSS pra-pemrosesan, meminifikasi JavaScript sisi klien, atau menjalankan alat, seperti webpack atau gulp.

Misalnya, untuk mengompilasi TypeScript ke JavaScript, file package.json Anda mungkin akan terlihat seperti berikut. Perhatikan skrip 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": "16.x.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": "^6.0.0",
    "express": "^4.16.3"
  },
  "devDependencies": {
    "@types/express": "^4.17.17",
    "@types/node": "^18.13.0",
    "c8": "^8.0.0",
    "chai": "^4.3.7",
    "gts": "^5.0.0",
    "mocha": "^10.2.0",
    "typescript": "^5.0.0",
    "wait-port": "^1.0.0"
  }
}

Menyajikan file statis

Saat Anda membuat atau menyalin file selama langkah build kustom, App Engine tidak menyalurkan file statis ini langsung dari aplikasi Anda menggunakan static_dir atau static_files yang ditentukan dalam file app.yaml. Sebagai gantinya, App Engine akan mengupload file statis ke infrastruktur penayangan di lingkungan standar sebelum menjalankan langkah build kustom. Setiap permintaan ke file yang dihasilkan atau disalin selama langkah build kustom akan menghasilkan error HTTP 404 NOT FOUND.