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