التعامل مع التبعيات

يُسمح للوظيفة باستخدام وحدات Node.js الخارجية بالإضافة إلى البيانات المحلية. تتم إدارة التبعيات في Node.js باستخدام npm ويتم التعبير عنها في ملف بيانات وصفية يسمى package.json . تدعم أوقات تشغيل وظائف السحابة Node.js التثبيت باستخدام npm أو الغزل .

لتحديد تبعية لوظيفتك ، قم بإضافتها إلى ملف 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')}!`);
});

تيبسكريبت

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: بادئة . في المثال التالي ، يشير mymodule إلى اسم الوحدة الخاصة بك و mymoduledir هو الدليل الذي يحتوي على الوحدة النمطية الخاصة بك:

{
  "dependencies": {
    "mymodule": "file:mymoduledir"
  }
}

يجب تخزين رمز هذه الوحدة المحلية في مكان آخر غير مجلد node_modules داخل الدليل الجذر لوظيفتك.

خطوات إضافية لـ TypeScript

يساعدك TypeScript أكثر عند استخدام المكتبات التي تحتوي على معلومات الكتابة. يتيح ذلك لـ TypeScript اكتشاف أخطاء بناء الجملة ويتيح للمحررين تقديم اقتراحات أفضل للإكمال التلقائي. تأتي بعض المكتبات ، مثل firebase-functions إدارة firebase-admin و Firebase ، مع تضمين تعريفات TypeScript.

لا توفر العديد من المكتبات تعريف TypeScript الخاص بها. يوفر مشروع 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() لاستيراد الملفات المحلية التي تنشرها جنبًا إلى جنب مع وظيفتك.

إذا كنت تكتب وظائف في TypeScript ، فاستخدم عبارة 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>