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 מקומיים כחלק מהפונקציה שלך. אתה יכול להשיג זאת על ידי הצהרת המודול שלך ב- package.json
באמצעות file:
prefix . בדוגמה הבאה, 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
כתלות ב-dev או עמיתים.
טוען מודולי Node.js
השתמש בפונקציה Node.js require()
כדי לטעון כל מודול Node.js שהתקנת. אתה יכול גם להשתמש בפונקציה require()
כדי לייבא קבצים מקומיים שאתה פורס לצד הפונקציה שלך.
import
באותו אופן כדי לטעון כל מודול Node.js שהתקנת.שימוש במודולים פרטיים
אתה יכול להשתמש במודול npm פרטי על ידי מתן הגדרות לאימות עם הרישום בקובץ .npmrc
הפונקציה.
מודולים פרטיים מ-Artifact Registry
מאגר חבילות Artifact Registry Node.js יכול לארח מודולים פרטיים עבור הפונקציה שלך. בעת הפריסה ל-Cloud Functions, תהליך הבנייה יפיק באופן אוטומטי אישורים של Artifact Registry עבור חשבון השירות Cloud Build . אתה רק צריך לרשום את מאגר ה-Artifact Registry ב-. .npmrc
שלך מבלי ליצור אישורים נוספים. לדוגמה:
@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>