যেসব ডেভেলপার TypeScript-এ ফাংশন লিখতে পছন্দ করেন, Cloud Functions তাদের দুই ধরনের সহায়তা প্রদান করে:
- ইনিশিয়ালাইজেশনের (
firebase init functions) সময় অটোমেটিক ট্রান্সপাইলেশনের জন্য TypeScript প্রোজেক্ট তৈরি ও কনফিগার করুন। - প্রিডিপ্লয় হুক-এর মাধ্যমে ডিপ্লয় করার সময় আগে থেকে থাকা TypeScript সোর্সকে JavaScript-এ ট্রান্সপাইল করুন।
এই গাইডের নির্দেশাবলী অনুসরণ করে, আপনি আগে থেকে থাকা JavaScript প্রোজেক্টকে TypeScript-এ মাইগ্রেট করতে পারবেন এবং আপনার সোর্স কোড ট্রান্সপাইল করার জন্য প্রি-ডিপ্লয় হুক ব্যবহার করে ফাংশন ডিপ্লয় করা চালিয়ে যেতে পারবেন। ফাংশন লেখার সময় ভ্যানিলা জাভাস্ক্রিপ্টের তুলনায় TypeScript অনেক সুবিধা প্রদান করে:
- TypeScript-এ async/await-এর মতো লেটেস্ট JavaScript ফিচার কাজ করে, যা প্রমিস ম্যানেজমেন্টকে সহজ করে তোলে
- আপনি কোডিং করার সময় Cloud Functions লিন্টার সাধারণ সমস্যা হাইলাইট করে
- টাইপ নিরাপত্তা আপনাকে ডিপ্লয় করা ফাংশনে রানটাইম সমস্যা এড়াতে সাহায্য করে
আপনি TypeScript-এ নতুন হলে, ৫ মিনিটে TypeScript দেখুন।
TypeScript-এর সাহায্যে নতুন Cloud Functions প্রোজেক্ট শুরু করা হচ্ছে
নতুন ডিরেক্টরিতে firebase init functions রান করুন। এই টুল আপনাকে JavaScript বা TypeScript-এর মাধ্যমে
প্রোজেক্ট তৈরি করার বিকল্প দেয়। নিম্নলিখিত প্রোজেক্ট স্ট্রাকচার আউটপুট করতে
TypeScript বেছে নিন:
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 প্রোজেক্ট ব্যবহার করা
আপনার আগে থেকে কোনও TypeScript প্রোজেক্ট থাকলে, আপনি একটি প্রিডিপ্লয় হুক যোগ করতে পারেন যাতে
আপনার কোড Cloud Functions for Firebase-এ ডিপ্লয় করার সময় প্রতিবার আপনার প্রোজেক্ট ট্রান্সপাইল করা হয়। আপনার একটি
সঠিকভাবে তৈরি করা tsconfig.json ফাইল এবং একটি Firebase প্রোজেক্টের প্রয়োজন হবে এবং আপনাকে
আপনার Firebase কনফিগারেশনে নিম্নলিখিত পরিবর্তনগুলি করতে হবে:
আপনার TypeScript প্রোজেক্ট তৈরি করতে একটি ব্যাশ স্ক্রিপ্ট যোগ করতে
package.jsonএডিট করুন। যেমন:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...বিল্ড স্ক্রিপ্ট চালানোর জন্য প্রি-ডিপ্লয় হুক যোগ করতে
firebase.jsonএডিট করুন। যেমন:{ "functions": { "predeploy": "npm --prefix functions run build", } }
এই কনফিগারেশনের মাধ্যমে, একটি firebase deploy --only functions কমান্ড
আপনার TypeScript কোড তৈরি করে এবং এটিকে ফাংশন হিসেবে ডিপ্লয় করে।
আগে থেকে থাকা জাভাস্ক্রিপ্ট প্রোজেক্ট TypeScript-এ মাইগ্রেট করা
আপনার যদি আগে থেকে কোনও Cloud Functions প্রোজেক্ট থাকে যা আপনি JavaScript-এ শুরু এবং ডেভেলপ করেছেন, তাহলে আপনি এটিকে TypeScript-এ মাইগ্রেট করতে পারেন। শুরু করার আগে আপনাকে একটি গিট চেকপয়েন্ট বা অন্য ব্যাকআপ তৈরি করার জন্য দৃঢ়ভাবে উৎসাহিত করা হচ্ছে।
আগে থেকে থাকা JavaScript 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-এ সোর্স কোড আবার লিখুন।
TypeScript ফাংশন এমুলেট করা হচ্ছে
লোকালি TypeScript ফাংশন টেস্ট করতে, আপনি লোকালি ফাংশন রান করুন-এ বর্ণিত এমুলেশন টুল ব্যবহার করতে পারেন। এইসব টুল ব্যবহার করার আগে আপনার কোড কম্পাইল করা গুরুত্বপূর্ণ, তাই firebase emulators:start বা firebase functions:shell রান করার আগে আপনার ফাংশন ডিরেক্টরির মধ্যে npm run build রান করতে ভুলবেন না। বিকল্প হিসেবে, শর্টকাট হিসেবে npm run serve বা
npm run shell রান করুন; এই দুটি কমান্ডই বিল্ড রান করে এবং
ফাংশন শেল পরিবেশন/শুরু করে।
TypeScript প্রোজেক্টের জন্য ফাংশন লগ
firebase deploy-এর সময়, আপনার প্রোজেক্টের index.ts, index.js-এ ট্রান্সপাইল করা হয়,
যার অর্থ হল, Cloud Functions লগ, index.js ফাইল থেকে লাইন নম্বর আউটপুট করবে,
আপনার লেখা কোড থেকে নয়। index.ts-এ সংশ্লিষ্ট পাথ ও লাইন নম্বর
খুঁজে পাওয়া সহজ করতে,
firebase deploy, functions/lib/index.js.map তৈরি করে। আপনি নিজের পছন্দের IDE-তে বা নোড মডিউলের মাধ্যমে এই সোর্স
ম্যাপ ব্যবহার করতে পারবেন।