নির্ভরতা হ্যান্ডলিং

একটি ফাংশন বহিরাগত 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 মডিউলও অন্তর্ভুক্ত করতে পারেন। আপনি file: prefix ব্যবহার করে package.json এ আপনার মডিউল ঘোষণা করে এটি অর্জন করতে পারেন। নিম্নলিখিত উদাহরণে, mymodule আপনার মডিউলের নামকে নির্দেশ করে এবং mymoduledir হল আপনার মডিউল ধারণকারী ডিরেক্টরি:

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

এই স্থানীয় মডিউলের কোডটি আপনার ফাংশনের রুট ডিরেক্টরির মধ্যে node_modules ফোল্ডার ছাড়া অন্য কোথাও সংরক্ষণ করা উচিত।

টাইপস্ক্রিপ্টের জন্য অতিরিক্ত পদক্ষেপ

আপনি যখন টাইপ ইনফরমেশন আছে এমন লাইব্রেরি ব্যবহার করেন তখন টাইপস্ক্রিপ্ট আপনাকে সবচেয়ে বেশি সাহায্য করে। এটি টাইপস্ক্রিপ্টকে সিনট্যাক্স ত্রুটিগুলি ধরতে দেয় এবং সম্পাদকদের আপনাকে আরও ভাল স্বয়ংসম্পূর্ণ পরামর্শ দিতে দেয়। কিছু লাইব্রেরি, যেমন firebase-admin এবং firebase-functions , টাইপস্ক্রিপ্ট সংজ্ঞা অন্তর্ভুক্ত করে।

অনেক লাইব্রেরি তাদের নিজস্ব TypeScript সংজ্ঞা প্রদান করে না। DefinitelyTyped প্রকল্পটি সর্বাধিক জনপ্রিয় নোড লাইব্রেরির জন্য সম্প্রদায়-রক্ষণাবেক্ষণের সংজ্ঞা প্রদান করে। DefinlyTyped এই সংজ্ঞাগুলিকে একই NPM প্যাকেজ নামের অধীনে প্রকাশ করে, কিন্তু "@types" সংস্থার ভিতরে। উদাহরণস্বরূপ, আপনি নিম্নলিখিতগুলির সাথে uuid লাইব্রেরির জন্য টাইপ তথ্য ইনস্টল করতে পারেন:

npm install @types/uuid

আপনি টাইপস্ক্রিপ্টের সাথে আরও পরিচিত হওয়ার সাথে সাথে আপনি উভয় ইনস্টলকে একত্রিত করতে পারেন:

npm install uuid @types/uuid

প্রকার নির্ভরতা লাইব্রেরি নির্ভরতা হিসাবে একই ধরনের হওয়া উচিত। উদাহরণস্বরূপ, আপনি uuid কে একটি সাধারণ নির্ভরতা হিসাবে এবং @types/uuid কে একটি dev নির্ভরতা বা পিয়ার নির্ভরতা হিসাবে সংরক্ষণ করবেন না।

Node.js মডিউল লোড হচ্ছে

আপনার ইনস্টল করা যেকোনো Node.js মডিউল লোড করতে Node.js require() ফাংশন ব্যবহার করুন। আপনি আপনার ফাংশনের পাশাপাশি আপনার স্থাপন করা স্থানীয় ফাইলগুলি আমদানি করতে require() ফাংশনটি ব্যবহার করতে পারেন।

আপনি যদি TypeScript-এ ফাংশন লিখছেন, তাহলে আপনার ইন্সটল করা Node.js মডিউল লোড করতে একইভাবে import স্টেটমেন্ট ব্যবহার করুন।

ব্যক্তিগত মডিউল ব্যবহার করে

আপনি ফাংশনের ডিরেক্টরিতে একটি .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 ফাইল ব্যবহার করেন তবে এটিতে নীচে দেখানো লাইনটি অন্তর্ভুক্ত করা উচিত। আপনার NPM-প্রদত্ত প্রমাণীকরণ টোকেন দিয়ে <YOUR_AUTH_TOKEN> প্রতিস্থাপন করুন।

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