Check out what’s new from Firebase at Google I/O 2022. Learn more

رسیدگی به وابستگی ها

یک تابع مجاز است از ماژول های Node.js خارجی و همچنین داده های محلی استفاده کند. وابستگی ها در Node.js با npm مدیریت می شوند و در یک فایل ابرداده به نام package.json بیان می شوند. زمان اجرا توابع Cloud Node.js معمولاً از نصب با استفاده از npm یا yarn پشتیبانی می‌کند.

برای تعیین یک وابستگی برای تابع خود، آن را به فایل package.json خود اضافه کنید.

در این مثال، یک وابستگی در فایل package.json فهرست شده است:

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

سپس وابستگی در تابع وارد می شود:

جاوا اسکریپت

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 اجازه می دهد تا خطاهای نحوی را شناسایی کند و به ویرایشگرها امکان می دهد پیشنهادهای تکمیل خودکار بهتری را به شما ارائه دهند. برخی از کتابخانه‌ها، مانند 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 یا وابستگی peer ذخیره کنید.

در حال بارگیری ماژول های Node.js

برای بارگذاری هر ماژول Node.js که نصب کرده اید از تابع Node.js require() استفاده کنید. همچنین می توانید از تابع require() برای وارد کردن فایل های محلی که در کنار تابع خود مستقر می کنید استفاده کنید.

اگر در حال نوشتن توابع در TypeScript هستید، از دستور import به همین ترتیب برای بارگذاری هر ماژول Node.js که نصب کرده اید استفاده کنید.

استفاده از ماژول های خصوصی

می توانید با ارائه تنظیماتی برای احراز هویت با رجیستری در یک فایل .npmrc . در دایرکتوری تابع از یک ماژول npm خصوصی استفاده کنید.

ماژول های خصوصی از Artifact Registry

مخزن بسته Artifact Registry Node.js می تواند ماژول های خصوصی را برای عملکرد شما میزبانی کند. هنگام استقرار در توابع Cloud، فرآیند ساخت به طور خودکار اعتبار رجیستری Artifact را برای حساب سرویس 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 . برای تنظیم یک نشانه تأیید سفارشی استفاده می‌کنید، باید شامل خط زیر باشد. رمز احراز هویت ارائه شده توسط NPM خود را جایگزین <YOUR_AUTH_TOKEN> کنید.

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