निर्भरता को संभालना

एक फ़ंक्शन को बाहरी 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 फ़ोल्डर के अलावा कहीं और संग्रहीत किया जाना चाहिए।

टाइपस्क्रिप्ट के लिए अतिरिक्त चरण

टाइपस्क्रिप्ट आपकी सबसे अधिक मदद करता है जब आप उन पुस्तकालयों का उपयोग करते हैं जिनमें टाइप की जानकारी होती है। यह टाइपस्क्रिप्ट को सिंटैक्स त्रुटियों को पकड़ने देता है और संपादकों को आपको बेहतर स्वत: पूर्ण सुझाव देने देता है। कुछ पुस्तकालय, जैसे firebase-admin और firebase-functions , टाइपस्क्रिप्ट परिभाषाओं के साथ जहाज शामिल हैं।

कई पुस्तकालय अपनी टाइपस्क्रिप्ट परिभाषा प्रदान नहीं करते हैं। निश्चित रूप से टाइप की गई परियोजना सबसे लोकप्रिय नोड पुस्तकालयों के लिए समुदाय-अनुरक्षित परिभाषा प्रदान करती है। निश्चित रूप से टाइप इन परिभाषाओं को उसी एनपीएम पैकेज नाम के तहत प्रकाशित करता है, लेकिन "@types" संगठन के अंदर। उदाहरण के लिए, आप निम्न के साथ uuid लाइब्रेरी के लिए प्रकार की जानकारी स्थापित कर सकते हैं:

npm install @types/uuid

जैसे-जैसे आप टाइपस्क्रिप्ट से अधिक परिचित होते जाते हैं, आप स्वयं को दोनों इंस्टालेशन को मिलाते हुए पा सकते हैं:

npm install uuid @types/uuid

प्रकार निर्भरता पुस्तकालय निर्भरता के समान ही होनी चाहिए। उदाहरण के लिए, आपको uuid को सामान्य निर्भरता के रूप में और @types/uuid को dev निर्भरता या सहकर्मी निर्भरता के रूप में नहीं सहेजना चाहिए।

Node.js मॉड्यूल लोड हो रहा है

आपके द्वारा इंस्टॉल किए गए किसी भी Node.js मॉड्यूल को लोड करने के लिए Node.js require() फ़ंक्शन का उपयोग करें। आप अपने फ़ंक्शन के साथ परिनियोजित स्थानीय फ़ाइलों को आयात करने के लिए require() फ़ंक्शन का भी उपयोग कर सकते हैं।

यदि आप टाइपस्क्रिप्ट में फ़ंक्शन लिख रहे हैं, तो import विवरण का उपयोग उसी तरह करें जैसे आपके द्वारा इंस्टॉल किए गए किसी भी Node.js मॉड्यूल को लोड करने के लिए।

निजी मॉड्यूल का उपयोग करना

आप फ़ंक्शन की निर्देशिका में .npmrc फ़ाइल में रजिस्ट्री के साथ प्रमाणीकरण के लिए सेटिंग्स प्रदान करके एक निजी npm मॉड्यूल का उपयोग कर सकते हैं।

विरूपण साक्ष्य रजिस्ट्री से निजी मॉड्यूल

एक आर्टिफैक्ट रजिस्ट्री Node.js पैकेज रिपॉजिटरी आपके फ़ंक्शन के लिए निजी मॉड्यूल होस्ट कर सकती है। क्लाउड फ़ंक्शंस में परिनियोजित करते समय, बिल्ड प्रक्रिया क्लाउड बिल्ड सेवा खाते के लिए स्वचालित रूप से आर्टिफ़ैक्ट रजिस्ट्री क्रेडेंशियल जनरेट करेगी। आपको अतिरिक्त क्रेडेंशियल जेनरेट किए बिना केवल अपने .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>