Node.js 12が一般提供になりました。

カスタム ビルドステップの実行

package.json ファイルに gcp-build スクリプトを追加すると、デプロイメント時、アプリケーションの起動前にカスタム ビルドステップを実行できます。

このスクリプトの実行時には、package.json ファイルの dependencies フィールドと devDependencies フィールドの依存関係を利用できます。 カスタムビルド ステップが実行された後、App Engine は package.json ファイルの dependencies フィールドで宣言されている本番環境の依存関係のみをインストールし、node_modules フォルダを削除して生成し直します。

カスタムビルド スクリプトは、CSS の前処理、クライアント側 JavaScript の圧縮、webpackgulp といったツールの実行など、さまざまなタスクの前処理を行うために使用できます。

たとえば、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": "12.x.x"
  },
  "scripts": {
    "prepare": "npm run gcp-build",
    "pretest": "npm run gcp-build",
    "test": "mocha test/*.test.js --exit",
    "posttest": "npm run lint",
    "lint": "tslint -p .",
    "start": "node ./index.js",
    "gcp-build": "tsc -p .",
    "deploy": "gcloud app deploy"
  },
  "dependencies": {
    "express": "^4.16.3",
    "typescript": "^4.0.0"
  },
  "devDependencies": {
    "mocha": "^8.0.0",
    "wait-port": "^0.2.7",
    "@types/express": "^4.16.0",
    "chai": "^4.2.0",
    "tslint": "^6.0.0",
    "typescript": "^4.0.0"
  }
}