依存関係の扱い

関数では、ローカルデータだけでなく、外部の Node.js モジュールも使用できます。Node.js における依存関係は npm で管理され、package.json というメタデータ ファイルで表現されます。

関数の依存関係を指定するには、package.json ファイルにその依存関係を追加します。gcloud コマンドライン ツールを使用してデプロイする場合は、依存関係を事前にインストールしておき、関数とともにデプロイすることもできます。デフォルトでは、node_modules フォルダは .gcloudignore ファイルに追加されます。デプロイの一部としてはアップロードされません。事前にインストールされた依存関係をデプロイするには、.gcloudignore ファイルから node_modules/ を削除し、その後で関数をデプロイします。

関数をデプロイした後、Cloud Functions は npm install コマンドを使用して、package.json ファイル内で宣言されている依存関係をインストールします。

この例では、依存関係は package.json ファイルにリストされています。

{
  "dependencies": {
    "uuid": "^3.0.1"
  }
}

依存関係は関数にインポートされます。

JavaScript

const uuid = require('uuid');

// Return a newly generated UUID in the HTTP response.
exports.getUuid = functions.https.onRequest((req, res) => {
  res.send(uuid.v4());
});

TypeScript

import * as uuid from 'uuid';

// Return a newly generated UUID in the HTTP response.
export let getUuid = functions.https.onRequest((req, res) => {
  res.send(uuid.v4());
}

npm を使用して Node.js モジュールをインストールする

Node.js モジュールをインストールする最も簡単な方法は、Cloud Function のあるフォルダで npm install コマンドを使用することです。たとえば、次のコマンドは uuid モジュールを追加します。

npm install uuid

これは、次の 2 つのステップを組み合わせたものです。

  1. package.json ファイルで、モジュールの最新バージョンを依存関係としてマークします。これは非常に重要です。Cloud Functions は、package.json ファイルで宣言されたモジュールのみをインストールします。
  2. モジュールを node_modules ディレクトリにダウンロードします。これにより、モジュールをローカルでの開発に使用できます。

マシンに npm がインストールされていない場合は、npm を入手します。

TypeScript の追加手順

TypeScript は、型情報のあるライブラリを使用するときに役立ちます。TypeScript を使用すると、構文エラーを捕捉し、エディタの自動補完機能を強化できます。firebase-adminfirebase-functions などのライブラリには TypeScript の定義が含まれています。

多くのライブラリは独自の TypeScript 定義を提供しません。DefinitelyTyped プロジェクトでは、よく使用されるノード ライブラリの定義をコミュニティで管理しています。DefinitelyTyped は、これらの定義を同じ NPM パッケージ名で公開していますが、名前に「@types」が含まれています。たとえば、uuid ライブラリの型情報をインストールするには、次のコマンドを実行します。

npm install @types/uuid

TypeScript に慣れてきたら、次のように両方のインストールを組み合わせることもできます。

npm install uuid @types/uuid

型の依存関係は、ライブラリの依存関係と同じ種類でなければなりません。たとえば、通常の依存関係として uuid を保存した場合、dev 依存関係またはピア依存関係として @types/uuid を保存できません。

Node.js モジュールを読み込む

インストールされている任意の Node.js モジュールを読み込むには、Node.js の require() 関数を使用します。require() 関数を使用して、関数とともにデプロイするローカル ファイルをインポートすることもできます。

TypeScript で関数を記述する場合は、同じ方法で import を使用し、インストール済みの Node.js モジュールを読み込みます。

非公開モジュールの使用

非公開の npm モジュールを使用するには、関数のディレクトリにある .npmrc ファイルに npm レジストリの認証情報(認証トークン)を指定する必要があります。npm のドキュメントでは、カスタムの読み取り専用アクセス トークンを作成する方法について説明しています。.npmrc ファイルには読み取り / 書き込みトークンが含まれているため、ホーム ディレクトリにこのファイルを作成して使用することは避けてください。デプロイ時に書き込み権限は必要なく、セキュリティ上のリスクが発生する可能性があります。

非公開リポジトリを使用していない場合には .npmrc ファイルを追加しないでください。追加すると、関数のデプロイ時間が長くなる可能性があります。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。