依存関係の指定

Node.js アプリの依存関係は、package.json ファイル内で宣言することによって指定します。

たとえば、Lodash を依存関係として指定する場合、package.json ファイルは次のようになります。

{
  "dependencies": {
    "lodash": "^4.0.1"
  }
}

デプロイ中に、Node.js ランタイムによって、package.json ファイル内で宣言されたすべての dependencies自動的にインストールされます。デフォルトでは npm install コマンドが使用されますが、Yarn と Pnpm のパッケージ管理システムもサポートされています。

  • Yarn: yarn.lock ファイルが存在する場合は、代わりに yarn install --production コマンドが使用されます。

  • Pnpm: pnpm-lock.yaml ファイルが存在する場合は、代わりに pnpm install コマンドが使用されます。

app.yaml ファイルの skip_files セクションで yarn.lock ファイルまたは pnpm-lock.yaml ファイルが指定されていないことを確認する必要があります。

デフォルトでは、App Engine は取得した依存関係をキャッシュに保存し、ビルド時間を短縮します。キャッシュに保存されていないバージョンの依存関係をインストールするには、次のコマンドを使用します。

gcloud app deploy --no-cache

スタンダード環境における package.json ファイルのサポートと制限:

  • Linux 対応の任意の Node.js パッケージを App Engine で利用できます。これにはネイティブ(C)拡張を必要とするパッケージも含まれます。

  • package.jsonengines フィールドが指定されている場合は、互換性のある Node.js バージョンを定義する必要があります。

  • devDependencies フィールドで定義した依存関係はすべて無視され、App Engine のアプリにインストールされることはありません。

  • アプリケーションの新しいインスタンスが作成されるたびにスクリプトが実行されるため、パフォーマンスの観点から start スクリプトは軽量にし、ビルドステップを除外する必要があります。

Artifact Registry によるプライベート依存関係

アプリで非公開の npm モジュールを使用する場合は、Artifact Registry Node.js パッケージ リポジトリを使用してプライベート依存関係をホストできます。アプリのデプロイ時に、ビルドプロセスにより Cloud Build サービス アカウントの Artifact Registry 認証情報が自動的に生成されるため、追加の認証情報を生成する必要はありません。プライベート依存関係を含めるには、Artifact Registry リポジトリを一覧表示し、アプリ ディレクトリの .npmrc ファイルで、レジストリを使用して認証するための構成を行います。例:

@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true

このアプローチは Yarn v1 パッケージ管理システムでも機能します。Yarn v2 以降を使用している場合は、Artifact Registry リポジトリを一覧表示し、アプリ ディレクトリの .yarnrc.yml ファイルで、レジストリを使用して認証するための設定を構成します。例:

npmScopes:
  SCOPE:
    npmRegistryServer: https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
    npmAlwaysAuth: true

その後、パッケージを package.json ファイルに追加します。例:

{
  "dependencies": {
    " @SCOPE/my-package": "^1.0.0"
  }
}

ウェブ フレームワークのインストール

アプリでウェブ リクエストに対応できるようにするには、ウェブ フレームワークを使用する必要があります。次のような Node.js ウェブ フレームワークを使用できます。

特定のウェブ フレームワーク(Express.js など)を使用するには、そのフレームワークを package.json ファイルに追加します。

  • npm を使用する場合:

    npm install --save express
  • yarn を使用する場合:

    yarn add express
  • pnpm を使用する場合

    pnpm add express

たとえば、結果の package.json ファイルは次のようになります。

{
  "dependencies": {
    "lodash": "^4.0.1",
    "express": "^4.16.2"
  }
}

Cloud クライアント ライブラリのインストール

Node.js 用 Cloud クライアント ライブラリは、Node.js デベロッパーが Datastore モードの Firestore(Datastore)Cloud Storage などの Google Cloud サービスと統合するための慣用的な方法です。

Cloud Storage 用の Node.js クライアント ライブラリをインストールするには:

  1. パッケージ管理システムを使用して Cloud クライアント ライブラリをローカルにインストールします。

    • npm を使用するには、次を実行します。

      npm install --save @google-cloud/storage
    • yarn を使用するには、次を実行します。

      yarn add @google-cloud/storage
    • pnpm を使用するには、次を実行します。

      pnpm add @google-cloud/storage
  2. 認証をセットアップします。Node.js 用 Cloud クライアント ライブラリを構成して、自動で認証を処理できます。

  3. Cloud Storage 用の Node.js クライアント ライブラリ リファレンスを使用して、アプリに Cloud Storage サービスのサポートを実装します。