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:
接頭辞を使用してモジュールを package.json
で宣言します。次の例では、mymodule
はモジュール名を指し、mymoduledir
はモジュールを含むディレクトリを指します。
{ "dependencies": { "mymodule": "file:mymoduledir" } }
このローカル モジュールのコードは、関数のルート ディレクトリ内にある node_modules
フォルダ以外の場所に保存する必要があります。
npm
を使用してローカルで Node.js モジュールをインストールする
ローカルで Node.js モジュールをインストールする特に簡単な方法は、Cloud Functions のあるフォルダで npm install
コマンドを使用することです。たとえば、次のコマンドは uuid
モジュールを追加します。
npm install uuid
これは、次の 2 つのステップを組み合わせたものです。
package.json
ファイルで、モジュールの最新バージョンを依存関係としてマークします。これは非常に重要です。Cloud Functions は、package.json
ファイルで宣言されたモジュールのみをインストールします。- モジュールを
node_modules
ディレクトリにダウンロードします。これにより、モジュールをローカルでの開発に使用できます。
マシンに npm がインストールされていない場合は、npm を入手します。
TypeScript の追加手順
TypeScript は、型情報のあるライブラリを使用するときに役立ちます。これにより TypeScript で構文エラーを捕捉し、エディタでの自動補完機能を強化できます。firebase-admin
と firebase-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()
関数を使用して、関数とともにデプロイするローカル ファイルをインポートすることもできます。
import
を使用し、インストール済みの Node.js モジュールを読み込みます。
非公開モジュールの使用
非公開の npm モジュールを使用するには、関数のディレクトリにある .npmrc
ファイルに npm レジストリの認証情報(認証トークン)を指定する必要があります。npm のドキュメントでは、カスタムの読み取り専用アクセス トークンを作成する方法について説明しています。.npmrc
ファイルには読み取り / 書き込みトークンが含まれているため、ホーム ディレクトリにこのファイルを作成して使用することは避けてください。デプロイ時に書き込み権限は必要なく、セキュリティ上のリスクが発生する可能性があります。
非公開リポジトリを使用していない場合は .npmrc
ファイルを追加しないでください。追加すると、関数のデプロイ時間が長くなる可能性があります。