Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now

নির্ভরতা পরিচালনা করা

কোনও ফাংশনকে বাহ্যিক নোড.জেএস মডিউলগুলির পাশাপাশি স্থানীয় ডেটা ব্যবহার করার অনুমতি দেওয়া হয়। package.json নির্ভরতাগুলি এনপিএম দিয়ে পরিচালিত হয় এবং 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')}!`);
}

স্থানীয় নোড.জেএস মডিউল সহ

আপনি নিজের ফাংশনের অংশ হিসাবে স্থানীয় নোড.জেএস মডিউলগুলিও অন্তর্ভুক্ত করতে পারেন। আপনি file: উপসর্গটি ব্যবহার করে package.json আপনার মডিউলটি ঘোষণা করে এটি অর্জন করতে পারেন। নিম্নলিখিত উদাহরণে, mymodule আপনার মডিউলটির নাম উল্লেখ করে এবং mymoduledir ডিরেক্টরিটি হল আপনার মডিউল যুক্ত:

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

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

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

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

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

npm install @types/uuid

আপনি যেমন টাইপস্ক্রিপ্টের সাথে আরও পরিচিত হয়ে উঠতে পারেন, আপনি নিজেকে উভয় ইনস্টল সমন্বিত করতে পারেন:

npm install uuid @types/uuid

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

নোড.জেএস মডিউল লোড হচ্ছে

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

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

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

একটি বেসরকারী এনপিএম মডিউল ব্যবহার করতে, আপনাকে অবশ্যই ফাংশনটির ডিরেক্টরিতে অবস্থিত একটি .npmrc ফাইলটিতে .npmrc রেজিস্ট্রিের জন্য শংসাপত্রাদি (auth টোকেন) সরবরাহ করতে হবে। এনপিএম ডকুমেন্টেশনটি কীভাবে কাস্টম পঠনযোগ্য অ্যাক্সেস টোকেন তৈরি করবেন তা ব্যাখ্যা করে। আমরা হোম ডিরেক্টরিতে তৈরি করা .npmrc ফাইলটি ব্যবহার করে নিরুৎসাহিত করি কারণ এতে একটি পঠন-লেখার টোকেন রয়েছে। স্থাপনার সময় লেখার অনুমতি প্রয়োজন হয় না এবং এটি কোনও সুরক্ষা ঝুঁকি তৈরি করতে পারে।

আপনি যদি ব্যক্তিগত সংগ্রহস্থল ব্যবহার না করেন তবে .npmrc ফাইলটি অন্তর্ভুক্ত করবেন না কারণ এটি আপনার ফাংশনগুলির জন্য স্থাপনার সময় বাড়িয়ে তুলতে পারে।

ফাইলের বিন্যাস

যদি আপনি একটি কাস্টম .npmrc টোকেন সেট করতে .npmrc ফাইল ব্যবহার করেন তবে এর নিচে প্রদর্শিত লাইনটি অন্তর্ভুক্ত করা উচিত। আপনার এনপিএম-সরবরাহিত প্রমাণীকরণ টোকেনের সাথে <YOUR_AUTH_TOKEN> প্রতিস্থাপন করুন।

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