package.json
. Runtime Cloud Functions Node.js umumnya mendukung penginstalan menggunakan npm atau yarn . Untuk menentukan ketergantungan fungsi Anda, tambahkan ke file package.json
Anda.
Dalam contoh ini, dependensi tercantum dalam file package.json
:
{ "dependencies": { "escape-html": "^1.0.3" } }
Ketergantungan kemudian diimpor dalam fungsi:
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')}!`);
}
Termasuk modul Node.js lokal
Anda juga dapat menyertakan modul Node.js lokal sebagai bagian dari fungsi Anda. Anda dapat melakukannya dengan mendeklarasikan modul Anda di package.json
menggunakan file:
prefix . Dalam contoh berikut, mymodule
mengacu pada nama modul Anda dan mymoduledir
adalah direktori yang berisi modul Anda:
{ "dependencies": { "mymodule": "file:mymoduledir" } }
Kode untuk modul lokal ini harus disimpan di tempat lain selain folder node_modules
di dalam direktori akar fungsi Anda.
Langkah tambahan untuk TypeScript
TypeScript sangat membantu Anda saat menggunakan pustaka yang memiliki informasi tipe. Ini memungkinkan TypeScript menangkap kesalahan sintaksis dan memungkinkan editor memberi Anda saran pelengkapan otomatis yang lebih baik. Beberapa pustaka, seperti firebase-admin
dan firebase-functions
, disertakan dengan definisi TypeScript.
Banyak perpustakaan tidak menyediakan definisi TypeScript mereka sendiri. Proyek DeflyTyped menyediakan definisi yang dikelola komunitas untuk pustaka node paling populer. DefiniteTyped menerbitkan definisi ini di bawah nama paket NPM yang sama, tetapi di dalam organisasi "@types". Misalnya, Anda dapat menginstal informasi jenis untuk pustaka uuid
dengan yang berikut ini:
npm install @types/uuid
Saat Anda menjadi lebih akrab dengan TypeScript, Anda mungkin menemukan diri Anda menggabungkan kedua pemasangan:
npm install uuid @types/uuid
Ketergantungan jenis harus sama dengan ketergantungan perpustakaan. Misalnya, Anda sebaiknya tidak menyimpan uuid
sebagai dependensi normal dan @types/uuid
sebagai dependensi dev atau dependensi peer.
Memuat modul Node.js
Gunakan fungsi Node.js require()
untuk memuat modul Node.js yang telah Anda instal. Anda juga dapat menggunakan fungsi require()
untuk mengimpor file lokal yang Anda terapkan bersama fungsi Anda.
import
dengan cara yang sama untuk memuat modul Node.js yang telah Anda instal.Menggunakan modul pribadi
Anda dapat menggunakan modul npm pribadi dengan menyediakan pengaturan untuk mengautentikasi dengan registri dalam file .npmrc
di direktori fungsi.
Modul pribadi dari Artifact Registry
Repositori paket Artifact Registry Node.js dapat menghosting modul pribadi untuk fungsi Anda. Saat men-deploy ke Cloud Functions, proses build akan secara otomatis menghasilkan kredensial Artifact Registry untuk akun layanan Cloud Build . Anda hanya perlu mencantumkan repositori Artifact Registry di .npmrc
Anda tanpa membuat kredensial tambahan. Sebagai contoh:
@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true
Modul pribadi dari repositori lain
Dokumentasi npm menjelaskan cara membuat token akses hanya-baca khusus. Kami tidak menyarankan penggunaan file .npmrc
yang dibuat di direktori home karena berisi token baca-tulis. Izin tulis tidak diperlukan selama penerapan, dan dapat menimbulkan risiko keamanan.
Jangan sertakan file .npmrc
jika Anda tidak menggunakan repositori pribadi, karena dapat menambah waktu penerapan untuk fungsi Anda.
Format file
Jika Anda menggunakan file .npmrc
untuk menyetel token autentikasi khusus, itu harus menyertakan baris yang ditunjukkan di bawah ini. Ganti <YOUR_AUTH_TOKEN>
dengan token autentikasi yang disediakan NPM.
//registry.npmjs.org/:_authToken=<YOUR_AUTH_TOKEN>