函式可使用外部 Node.js 模組以及本機資料。Node.js 中的依附元件由 npm 代管,並以稱為 package.json 的中繼資料檔案表示。Cloud Functions Node.js 執行階段支援使用 npm、yarn 或 pnpm 安裝。
如要為函式指定依附元件,請將其新增到 package.json 檔案中。
在這個範例中,依附元件會列在 package.json 檔案中:
{ "dependencies": { "escape-html": "^1.0.3" } }
然後,依附元件會匯入函式中:
JavaScript
const onRequest = require("firebase-functions/https");
const escapeHtml = require("escape-html");
// Return a greeting with the input HTML-escaped.
exports.hello = onRequest((req, res) => {
res.send(Hello ${escapeHtml(req.query.name || req.body.name || "World")}!`);
});
TypeScript
import { onRequest } from "firebase-functions/https";
import * as escapeHtml from "escape-html";
// Return a greeting with the input HTML-escaped.
export let hello = 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 資料夾以外的位置。
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 儲存為一般依附元件,並將 儲存為開發依附元件或對等依附元件。@types/uuid
載入 Node.js 模組
使用 Node.js require() 函式載入任何您已安裝的 Node.js 模組。您也可以使用 require() 函式匯入您與函式一起部署的本機檔案。
如果您使用 TypeScript 編寫函式,請以相同方式使用 import 陳述式,載入您已安裝的任何 Node.js 模組。
使用私人模組
如要使用私人 npm 模組,請在函式目錄的 .npmrc 檔案中,提供向登錄檔驗證的設定。如果使用 Yarn v2 以上版本做為套件管理員,這個檔案會命名為 .yarnrc.yml。
Artifact Registry 中的私有模組
Artifact Registry Node.js 套件存放區可代管函式的私有模組。部署 Google 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
這種方法也適用於 Yarn v1 套件管理工具。如果您使用 Yarn v2 以上版本,只需在 .yarnrc.yml 中列出 Artifact Registry 存放區,無須提供額外憑證。例如:
npmScopes:
SCOPE:
npmRegistryServer: https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
npmAlwaysAuth: true
其他存放區的私人模組
npm 文件說明如何建立自訂唯讀存取憑證。在主目錄中建立的 .npmrc 檔案包含讀取/寫入憑證,因此我們不建議使用。部署期間不需要寫入權限,且這項權限可能會帶來安全風險。
.npmrc 檔案可能會增加函式的部署時間,因此如果您未使用私人存放區,請不要加入這個檔案。
檔案格式
如果您使用 .npmrc 檔案設定自訂驗證權杖,該檔案應包含下列程式碼。
//REGISTRY_DOMAIN/:_authToken=AUTH_TOKEN
取代:
- REGISTRY_DOMAIN:私有 npm 登錄檔的網域名稱。如果存放區是由
npmjs.org代管,請將這個欄位設為registry.npmjs.org。 AUTH_TOKEN:npm 登錄檔的授權權杖。 這可以是權杖的文字值,也可以是文字字串
${NPM_TOKEN},npm會將其替換為環境中的實際權杖值。您可以使用
gcloud functions deploy指令的--set-build-env-vars引數,設定$NPM_TOKEN環境變數。如要進一步瞭解 NPM 驗證權杖,請參閱 NPM 私人模組教學課程。