Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

依存関係の処理

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

関数は、外部 Node.js モジュールとローカル データを使用できます。 Node.js の依存関係はnpmで管理され、 package.jsonというメタデータ ファイルで表現されます。 Cloud Functions Node.js ランタイムは通常、 npmまたはyarnを使用したインストールをサポートしています。

関数の依存関係を指定するには、それをpackage.jsonファイルに追加します。

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

{
  "dependencies": {
    "escape-html": "^1.0.3"
  }
}

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

JavaScript

const escapeHtml = require('escape-html');

// Return a greeting with the input HTML-escaped.
exports.hello = functions.https.onRequest((req, res) => {
  res.send(`Hello ${escapeHtml(req.query.name || req.body.name || 'World')}!`);
});

TypeScript

import * as escapeHtml from 'escape-html';

// Return a greeting with the input HTML-escaped.
export let hello = functions.https.onRequest((req, res) => {
  res.send(`Hello ${escapeHtml(req.query.name || req.body.name || 'World')}!`);
}

ローカル Node.js モジュールを含める

関数の一部としてローカル Node.js モジュールを含めることもできます。これは、 file: prefixを使用してpackage.jsonでモジュールを宣言することで実現できます。次の例では、 mymoduleはモジュール名を指し、 mymoduledirはモジュールを含むディレクトリです。

{
  "dependencies": {
    "mymodule": "file:mymoduledir"
  }
}

このローカル モジュールのコードは、関数のルート ディレクトリ内のnode_modulesフォルダー以外の場所に保存する必要があります。

TypeScript の追加手順

TypeScript は、型情報を持つライブラリを使用するときに最も役立ちます。これにより、TypeScript は構文エラーをキャッチし、エディターはより適切なオートコンプリートの提案を行うことができます。 firebase-adminfirebase-functionsなどの一部のライブラリには、TypeScript 定義が含まれています。

多くのライブラリは、独自の TypeScript 定義を提供していません。 FixedTypedプロジェクトは、最も一般的なノード ライブラリのコミュニティが管理する定義を提供します。 FixedTyped は、これらの定義を同じ NPM パッケージ名で公開しますが、"@types" 組織内で公開します。たとえば、 uuidライブラリの型情報を次のようにインストールできます。

npm install @types/uuid

TypeScript に慣れてくると、両方のインストールを組み合わせていることに気付くかもしれません。

npm install uuid @types/uuid

型の依存関係は、ライブラリの依存関係と同じ種類である必要があります。たとえば、 uuidを通常の依存関係として保存し、 @types/uuidを dev 依存関係またはピア依存関係として保存しないでください。

Node.js モジュールのロード

Node.js のrequire()関数を使用して、インストールした Node.js モジュールをロードします。また、 require()関数を使用して、関数と共にデプロイするローカル ファイルをインポートすることもできます。

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

プライベート モジュールの使用

関数のディレクトリにある.npmrcファイルにレジストリで認証するための設定を指定することで、プライベート npm モジュールを使用できます。

Artifact Registry のプライベート モジュール

Artifact Registry Node.js パッケージ リポジトリは、関数のプライベート モジュールをホストできます。 Cloud Functions にデプロイすると、ビルド プロセスによってCloud Build サービス アカウントの Artifact Registry 認証情報が自動的に生成されます。追加の認証情報を生成せずに、 .npmrcに Artifact Registry リポジトリをリストするだけで済みます。例えば:

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

他のリポジトリからのプライベート モジュール

npm のドキュメントでは、カスタムの読み取り専用アクセス トークンを作成する方法について説明しています。読み取り/書き込みトークンが含まれているため、ホーム ディレクトリに作成された.npmrcファイルの使用はお勧めしません。展開中は書き込み権限は必要なく、セキュリティ リスクが生じる可能性があります。

関数のデプロイ時間が長くなる可能性があるため、プライベート リポジトリを使用していない場合は、 .npmrcファイルを含めないでください。

ファイル形式

.npmrcファイルを使用してカスタム認証トークンを設定する場合は、以下に示す行を含める必要があります。 <YOUR_AUTH_TOKEN>を NPM 提供の認証トークンに置き換えます。

//registry.npmjs.org/:_authToken=<YOUR_AUTH_TOKEN>