एक फ़ंक्शन को बाहरी Node.js मॉड्यूल के साथ-साथ स्थानीय डेटा का उपयोग करने की अनुमति है। Node.js में निर्भरताएँ npm के साथ प्रबंधित की जाती हैं और package.json
नामक मेटाडेटा फ़ाइल में व्यक्त की जाती हैं। क्लाउड फ़ंक्शंस नोड.जेएस रनटाइम एनपीएम , यार्न या पीएनपीएम का उपयोग करके स्थापित करने का समर्थन करता है।
अपने फ़ंक्शन के लिए निर्भरता निर्दिष्ट करने के लिए, इसे अपनी 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 मॉड्यूल भी शामिल कर सकते हैं। आप file:
उपसर्ग का उपयोग करके package.json
में अपने मॉड्यूल को घोषित करके इसे प्राप्त कर सकते हैं। निम्नलिखित उदाहरण में, 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
देव निर्भरता या सहकर्मी निर्भरता के रूप में नहीं सहेजना चाहिए।
लोड हो रहा है Node.js मॉड्यूल
आपके द्वारा स्थापित किसी भी Node.js मॉड्यूल को लोड करने के लिए Node.js require()
फ़ंक्शन का उपयोग करें। आप अपने फ़ंक्शन के साथ तैनात स्थानीय फ़ाइलों को आयात करने के लिए require()
फ़ंक्शन का भी उपयोग कर सकते हैं।
import
स्टेटमेंट का उसी तरह उपयोग करें जैसे आपने स्थापित किए गए किसी भी Node.js मॉड्यूल को लोड करने के लिए किया है।निजी मॉड्यूल का उपयोग करना
आप फ़ंक्शन की निर्देशिका में .npmrc
फ़ाइल में रजिस्ट्री के साथ प्रमाणीकरण के लिए सेटिंग्स प्रदान करके एक निजी npm मॉड्यूल का उपयोग कर सकते हैं। यदि आप Yarn v2 या उच्चतर का उपयोग अपने पैकेज प्रबंधक के रूप में कर रहे हैं, तो इस फ़ाइल का नाम .yarnrc.yml
है।
विरूपण साक्ष्य रजिस्ट्री से निजी मॉड्यूल
एक विरूपण साक्ष्य रजिस्ट्री Node.js पैकेज रिपॉजिटरी आपके कार्य के लिए निजी मॉड्यूल की मेजबानी कर सकती है। जब आप एक Google क्लाउड फ़ंक्शन फ़ंक्शन परिनियोजित करते हैं, तो निर्माण प्रक्रिया स्वचालित रूप से क्लाउड बिल्ड सेवा खाते के लिए आर्टिफैक्ट रजिस्ट्री प्रमाणिकता उत्पन्न करती है। आपको केवल अपने .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
यह तरीका यार्न v1 पैकेज मैनेजर के लिए भी काम करता है। यदि आप Yarn v2 या उच्चतर का उपयोग कर रहे हैं, तो आपको केवल अतिरिक्त क्रेडेंशियल्स के बिना अपने .yarnrc.yml
में आर्टिफैक्ट रजिस्ट्री रिपॉजिटरी को सूचीबद्ध करने की आवश्यकता है। उदाहरण के लिए:
npmScopes:
SCOPE:
npmRegistryServer: https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
npmAlwaysAuth: true
अन्य रिपॉजिटरी से निजी मॉड्यूल
एनपीएम दस्तावेज बताता है कि कस्टम रीड-ओनली एक्सेस टोकन कैसे बनाएं। हम होम डायरेक्टरी में बनाई गई .npmrc
फ़ाइल का उपयोग करने को हतोत्साहित करते हैं क्योंकि इसमें रीड-राइट टोकन होता है। परिनियोजन के दौरान लिखने की अनुमति आवश्यक नहीं है, और इससे सुरक्षा जोखिम हो सकता है।
यदि आप निजी रिपॉजिटरी का उपयोग नहीं कर रहे हैं तो .npmrc
फ़ाइल को शामिल न करें, क्योंकि यह आपके कार्यों के लिए परिनियोजन समय बढ़ा सकती है।
फ़ाइल फ़ारमैट
यदि आप कस्टम प्रमाणीकरण टोकन सेट करने के लिए .npmrc
फ़ाइल का उपयोग कर रहे हैं, तो इसमें नीचे दिखाई गई पंक्ति शामिल होनी चाहिए।
//REGISTRY_DOMAIN/:_authToken=AUTH_TOKEN
बदलना:
- REGISTRY_DOMAIN : आपकी निजी npm रजिस्ट्री का डोमेन नाम। यदि आपका रिपॉजिटरी
npmjs.org
के साथ होस्ट किया गया है, तो इस फील्ड कोregistry.npmjs.org
पर सेट करें। AUTH_TOKEN : आपकी एनपीएम रजिस्ट्री के लिए प्राधिकरण टोकन। यह या तो टोकन का शाब्दिक पाठ मान या पाठ स्ट्रिंग
${NPM_TOKEN}
हो सकता है, जिसेnpm
पर्यावरण से वास्तविक टोकन मान से बदल देता है।आप
$NPM_TOKEN
पर्यावरण चर को--set-build-env-vars
तर्क के साथ अपनेgcloud functions deploy
कमांड पर सेट कर सकते हैं। NPM प्रमाणन टोकन के बारे में अधिक जानकारी के लिए निजी मॉड्यूल पर NPM ट्यूटोरियल देखें।