যেসব ডেভেলপার টাইপস্ক্রিপ্টে ফাংশন লিখতে পছন্দ করেন, Cloud Functions তাদের জন্য দুই ধরনের সহায়তা প্রদান করে:
- ইনিশিয়ালাইজেশনের সময় স্বয়ংক্রিয় ট্রান্সপাইলেশনের জন্য টাইপস্ক্রিপ্ট প্রজেক্ট তৈরি এবং কনফিগার করুন (
firebase init functions)। - প্রিডিপ্লয় হুকের মাধ্যমে ডিপ্লয় করার সময় বিদ্যমান টাইপস্ক্রিপ্ট সোর্সকে জাভাস্ক্রিপ্টে ট্রান্সপাইল করুন।
এই গাইডের নির্দেশনা অনুসরণ করে, আপনি একটি বিদ্যমান জাভাস্ক্রিপ্ট প্রজেক্টকে টাইপস্ক্রিপ্টে মাইগ্রেট করতে পারেন এবং আপনার সোর্স কোড ট্রান্সপাইল করার জন্য একটি প্রিডিপ্লয় হুক ব্যবহার করে ফাংশন ডিপ্লয় করা চালিয়ে যেতে পারেন। ফাংশন লেখার ক্ষেত্রে সাধারণ জাভাস্ক্রিপ্টের তুলনায় টাইপস্ক্রিপ্ট অনেক সুবিধা প্রদান করে:
- TypeScript, async/await-এর মতো জাভাস্ক্রিপ্টের সর্বশেষ বৈশিষ্ট্যগুলো সমর্থন করে, যা প্রমিস ব্যবস্থাপনাকে সহজ করে তোলে।
- Cloud Functions লিন্টার কোডিং করার সময় সাধারণ সমস্যাগুলো তুলে ধরে।
- টাইপ সেফটি আপনাকে ডিপ্লয় করা ফাংশনগুলিতে রানটাইম ত্রুটি এড়াতে সাহায্য করে।
আপনি যদি টাইপস্ক্রিপ্টে নতুন হন, তাহলে ‘৫ মিনিটে টাইপস্ক্রিপ্ট’ দেখুন।
টাইপস্ক্রিপ্ট দিয়ে একটি নতুন Cloud Functions প্রজেক্ট শুরু করা
একটি নতুন ডিরেক্টরিতে firebase init functions চালান। টুলটি আপনাকে জাভাস্ক্রিপ্ট বা টাইপস্ক্রিপ্ট দিয়ে প্রজেক্টটি বিল্ড করার অপশন দেবে। নিম্নলিখিত প্রজেক্ট কাঠামোটি আউটপুট করতে টাইপস্ক্রিপ্ট বেছে নিন:
myproject
+- functions/ # Directory containing all your functions code
|
+- package.json # npm package file describing your Cloud Functions code
|
+- tsconfig.json
|
+- .eslintrc.js # Optional file if you enabled ESLint
+- tsconfig.dev.json # Optional file that references .eslintrc.js
|
+- src/ # Directory containing TypeScript source
| |
| +- index.ts # main source file for your Cloud Functions code
|
+- lib/
|
+- index.js # Built/transpiled JavaScript code
|
+- index.js.map # Source map for debugging
ইনিশিয়ালাইজেশন সম্পূর্ণ হলে, index.ts-এ থাকা স্যাম্পলটি আনকমেন্ট করুন এবং "Hello World" ফাংশনটির কার্যকারিতা দেখতে npm run serve চালান।
একটি বিদ্যমান টাইপস্ক্রিপ্ট প্রজেক্ট ব্যবহার করে
আপনার যদি আগে থেকেই একটি TypeScript প্রজেক্ট থাকে, তাহলে Cloud Functions for Firebase প্রতিবার আপনার কোড ডিপ্লয় করার সময় প্রজেক্টটি যাতে ট্রান্সপাইল হয়, তা নিশ্চিত করতে আপনি একটি predeploy হুক যোগ করতে পারেন। এর জন্য আপনার একটি সঠিকভাবে তৈরি করা tsconfig.json ফাইল এবং একটি Firebase প্রজেক্ট লাগবে, এবং আপনার Firebase কনফিগারেশনে নিম্নলিখিত পরিবর্তনগুলো করতে হবে:
আপনার টাইপস্ক্রিপ্ট প্রজেক্ট বিল্ড করার জন্য একটি ব্যাশ স্ক্রিপ্ট যোগ করতে
package.jsonসম্পাদনা করুন। উদাহরণস্বরূপ:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...বিল্ড স্ক্রিপ্টটি চালানোর জন্য একটি প্রিডিপ্লয় হুক যোগ করতে
firebase.jsonসম্পাদনা করুন। উদাহরণস্বরূপ:{ "functions": { "predeploy": "npm --prefix functions run build", } }
এই কনফিগারেশনের মাধ্যমে, ` firebase deploy --only functions কমান্ডটি আপনার টাইপস্ক্রিপ্ট কোড বিল্ড করে এবং এটিকে ফাংশন হিসেবে ডিপ্লয় করে।
বিদ্যমান জাভাস্ক্রিপ্ট প্রজেক্টকে টাইপস্ক্রিপ্টে স্থানান্তর করা
আপনার যদি জাভাস্ক্রিপ্টে শুরু ও তৈরি করা কোনো Cloud Functions প্রজেক্ট থাকে, তবে আপনি সেটিকে টাইপস্ক্রিপ্টে মাইগ্রেট করতে পারেন। কাজ শুরু করার আগে একটি গিট চেকপয়েন্ট বা অন্য কোনো ব্যাকআপ তৈরি করে নেওয়ার জন্য বিশেষভাবে অনুরোধ করা হচ্ছে।
একটি বিদ্যমান জাভাস্ক্রিপ্ট Cloud Functions প্রজেক্ট মাইগ্রেট করতে:
- একটি গিট চেকপয়েন্ট তৈরি করুন এবং আপনার বিদ্যমান জাভাস্ক্রিপ্ট সোর্স ফাইলগুলোর কপি সংরক্ষণ করুন।
- প্রজেক্ট ডিরেক্টরিতে,
firebase init functionsচালান এবং ফাংশন লেখার জন্য ভাষা জানতে চাওয়া হলেTypeScriptনির্বাচন করুন। - বিদ্যমান
package.jsonফাইলটি ওভাররাইট করবেন কিনা জানতে চাওয়া হলে, 'না' নির্বাচন করুন, যদি না আপনি নিশ্চিত হন যে আপনি বিদ্যমান ফাইলটি রাখতে চান না। -
functions/srcডিরেক্টরি থেকেindex.tsমুছে ফেলুন এবং এর পরিবর্তে আপনার বর্তমান সোর্স কোডটি দিন। - ইনিশিয়ালাইজেশনের সময় তৈরি হওয়া
tsconfig.jsonফাইলে, জাভাস্ক্রিপ্ট অনুমোদনের জন্য কম্পাইলার অপশন হিসেবে"allowJs": trueসেট করুন। - আপনার সংরক্ষিত
package.jsonফাইলটিfunctionsডিরেক্টরিতে কপি করুন এবং এটি সম্পাদনা করে"main"মান"lib/index.js"সেট করুন। এছাড়াও
package.jsonফাইলে, নিচের মতো করে TypeScript-এর জন্য একটি বিল্ড স্ক্রিপ্ট যোগ করুন:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...npm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parserচালিয়ে"typescript"একটি ডেভ ডিপেন্ডেন্সি হিসেবে যোগ করুন।সমস্ত ডিপেন্ডেন্সি ইনস্টল করতে,
npm install --save @types/<dependency>` কমান্ডটি চালান।প্রয়োজন অনুযায়ী সোর্স কোড .js থেকে .ts ফাইলে পুনর্লিখন করুন।
টাইপস্ক্রিপ্ট ফাংশন অনুকরণ করা
স্থানীয়ভাবে টাইপস্ক্রিপ্ট ফাংশন পরীক্ষা করার জন্য, আপনি "Run functions locally" অংশে বর্ণিত এমুলেশন টুলগুলো ব্যবহার করতে পারেন। এই টুলগুলো ব্যবহার করার আগে আপনার কোড কম্পাইল করা জরুরি, তাই firebase emulators:start বা firebase functions:shell চালানোর আগে আপনার functions ডিরেক্টরির ভেতরে npm run build অবশ্যই চালিয়ে নেবেন। বিকল্পভাবে, শর্টকাট হিসেবে npm run serve বা npm run shell চালান; এই কমান্ডগুলো বিল্ড রান করার পাশাপাশি ফাংশনস শেলও সার্ভ/স্টার্ট করে।
টাইপস্ক্রিপ্ট প্রোজেক্টের জন্য ফাংশন লগ
firebase deploy চলাকালীন, আপনার প্রোজেক্টের index.ts index.js এ ট্রান্সপাইল হয়। এর মানে হলো, ক্লাউড ফাংশনস লগ আপনার লেখা কোডের পরিবর্তে index.js ফাইলের লাইন নম্বরগুলো আউটপুট হিসেবে দেখাবে। index.ts এ সংশ্লিষ্ট পাথ এবং লাইন নম্বরগুলো খুঁজে পাওয়া আপনার জন্য সহজ করতে, firebase deploy functions/lib/index.js.map ফাইল তৈরি করে। আপনি এই সোর্স ম্যাপটি আপনার পছন্দের IDE-তে অথবা একটি নোড মডিউলের মাধ্যমে ব্যবহার করতে পারেন।