একটি ফাংশনকে বহিরাগত Node.js মডিউলের পাশাপাশি স্থানীয় ডেটা ব্যবহার করার অনুমতি দেওয়া হয়। Node.js-এর নির্ভরতা npm দিয়ে পরিচালিত হয় এবং package.json নামক একটি মেটাডেটা ফাইলে প্রকাশ করা হয়। ক্লাউড ফাংশন Node.js রানটাইম npm , yarn , অথবা pnpm ব্যবহার করে ইনস্টল করার সুবিধা প্রদান করে।
আপনার ফাংশনের জন্য একটি নির্ভরতা নির্দিষ্ট করতে, এটি আপনার package.json ফাইলে যোগ করুন।
এই উদাহরণে, package.json ফাইলে একটি নির্ভরতা তালিকাভুক্ত করা হয়েছে:
{ "dependencies": { "escape-html": "^1.0.3" } }
এরপর নির্ভরতা ফাংশনে আমদানি করা হয়:
জাভাস্ক্রিপ্ট
const onRequest = require("firebase-functions/https");
const escapeHtml = require("escape-html");
// Return a greeting with the input HTML-escaped.
exports.hello = onRequest((req, res) => {
res.send(Hello ${escapeHtml(req.query.name || req.body.name || "World")}!`);
});
টাইপস্ক্রিপ্ট
import { onRequest } from "firebase-functions/https";
import * as escapeHtml from "escape-html";
// Return a greeting with the input HTML-escaped.
export let hello = 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 , টাইপস্ক্রিপ্ট সংজ্ঞা সহ আসে।
অনেক লাইব্রেরি তাদের নিজস্ব টাইপস্ক্রিপ্ট সংজ্ঞা প্রদান করে না। ডেফিনিটি টাইপড প্রকল্পটি সর্বাধিক জনপ্রিয় নোড লাইব্রেরির জন্য কমিউনিটি-রক্ষণাবেক্ষণ সংজ্ঞা প্রদান করে। ডেফিনিটি টাইপড একই NPM প্যাকেজ নামে এই সংজ্ঞাগুলি প্রকাশ করে, কিন্তু "@types" সংস্থার ভিতরে। উদাহরণস্বরূপ, আপনি নিম্নলিখিতগুলি ব্যবহার করে uuid লাইব্রেরির জন্য টাইপ তথ্য ইনস্টল করতে পারেন:
npm install @types/uuid
টাইপস্ক্রিপ্টের সাথে আরও পরিচিত হওয়ার সাথে সাথে আপনি উভয় ইনস্টলকে একত্রিত করতে পারেন:
npm install uuid @types/uuid
টাইপ ডিপেন্ডেন্সি লাইব্রেরি ডিপেন্ডেন্সির মতোই হওয়া উচিত। উদাহরণস্বরূপ, আপনার uuid সাধারণ ডিপেন্ডেন্সি হিসেবে এবং @types/uuid ডেভ ডিপেন্ডেন্সি বা পিয়ার ডিপেন্ডেন্সি হিসেবে সংরক্ষণ করা উচিত নয়।
Node.js মডিউল লোড হচ্ছে
আপনার ইনস্টল করা যেকোনো Node.js মডিউল লোড করতে Node.js require() ফাংশন ব্যবহার করুন। আপনার ফাংশনের পাশাপাশি স্থাপন করা স্থানীয় ফাইলগুলি আমদানি করতে আপনি require() ফাংশনও ব্যবহার করতে পারেন।
যদি আপনি টাইপস্ক্রিপ্টে ফাংশন লিখছেন, তাহলে আপনার ইনস্টল করা যেকোনো Node.js মডিউল লোড করার জন্য একইভাবে import বিবৃতি ব্যবহার করুন।
ব্যক্তিগত মডিউল ব্যবহার করা
ফাংশনের ডিরেক্টরিতে .npmrc ফাইলে রেজিস্ট্রির সাথে প্রমাণীকরণের জন্য সেটিংস প্রদান করে আপনি একটি ব্যক্তিগত npm মডিউল ব্যবহার করতে পারেন। যদি আপনি আপনার প্যাকেজ ম্যানেজার হিসাবে Yarn v2 বা উচ্চতর ব্যবহার করেন, তাহলে এই ফাইলটির নাম .yarnrc.yml ।
আর্টিফ্যাক্ট রেজিস্ট্রি থেকে ব্যক্তিগত মডিউল
একটি Artifact Registry Node.js প্যাকেজ রিপোজিটরি আপনার ফাংশনের জন্য ব্যক্তিগত মডিউল হোস্ট করতে পারে। যখন আপনি একটি Google Cloud Functions ফাংশন স্থাপন করেন, তখন বিল্ড প্রক্রিয়া স্বয়ংক্রিয়ভাবে Cloud Build পরিষেবা অ্যাকাউন্টের জন্য Artifact Registry শংসাপত্র তৈরি করে। অতিরিক্ত শংসাপত্র তৈরি না করে আপনাকে কেবল আপনার .npmrc এ Artifact Registry সংগ্রহস্থল তালিকাভুক্ত করতে হবে। উদাহরণস্বরূপ:
@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true
এই পদ্ধতিটি Yarn v1 প্যাকেজ ম্যানেজারের জন্যও কাজ করে। আপনি যদি Yarn v2 বা তার উচ্চতর সংস্করণ ব্যবহার করেন, তাহলে অতিরিক্ত শংসাপত্র ছাড়াই আপনার .yarnrc.yml এ শুধুমাত্র Artifact Registry সংগ্রহস্থল তালিকাভুক্ত করতে হবে। উদাহরণস্বরূপ:
npmScopes:
SCOPE:
npmRegistryServer: https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
npmAlwaysAuth: true
অন্যান্য সংগ্রহস্থল থেকে ব্যক্তিগত মডিউল
npm ডকুমেন্টেশনে কাস্টম রিড-ওনলি অ্যাক্সেস টোকেন কীভাবে তৈরি করতে হয় তা ব্যাখ্যা করা হয়েছে। আমরা হোম ডিরেক্টরিতে তৈরি .npmrc ফাইলটি ব্যবহার করতে নিরুৎসাহিত করি কারণ এতে একটি রিড-রাইট টোকেন থাকে। স্থাপনার সময় লেখার অনুমতির প্রয়োজন হয় না এবং এটি নিরাপত্তা ঝুঁকি তৈরি করতে পারে।
যদি আপনি ব্যক্তিগত সংগ্রহস্থল ব্যবহার না করেন তবে .npmrc ফাইলটি অন্তর্ভুক্ত করবেন না, কারণ এটি আপনার ফাংশনগুলির জন্য স্থাপনার সময় বাড়িয়ে দিতে পারে।
ফাইল ফর্ম্যাট
যদি আপনি একটি কাস্টম প্রমাণীকরণ টোকেন সেট করার জন্য একটি .npmrc ফাইল ব্যবহার করেন, তাহলে এতে নীচে দেখানো লাইনটি অন্তর্ভুক্ত করা উচিত।
//REGISTRY_DOMAIN/:_authToken=AUTH_TOKEN
প্রতিস্থাপন করুন:
- REGISTRY_DOMAIN : আপনার ব্যক্তিগত npm রেজিস্ট্রির ডোমেন নাম। যদি আপনার রিপোজিটরি
npmjs.orgদিয়ে হোস্ট করা থাকে, তাহলে এই ক্ষেত্রটিregistry.npmjs.orgএ সেট করুন। AUTH_TOKEN : আপনার npm রেজিস্ট্রির জন্য অনুমোদন টোকেন। এটি হয় টোকেনের আক্ষরিক টেক্সট মান হতে পারে অথবা
${NPM_TOKEN}টেক্সট স্ট্রিং হতে পারে, যাnpmপরিবেশ থেকে আসল টোকেন মানের সাথে প্রতিস্থাপন করে।তুমি তোমার
gcloud functions deployকমান্ডে--set-build-env-varsআর্গুমেন্ট দিয়ে$NPM_TOKENএনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারো। NPM auth টোকেনের আরও বিস্তারিত জানার জন্য প্রাইভেট মডিউলের NPM টিউটোরিয়ালটি দেখুন।