যেসব ডেভেলপার টাইপস্ক্রিপ্টে ফাংশন লিখতে পছন্দ করেন, তাদের জন্য Cloud Functions দুই ধরণের সহায়তা প্রদান করে:
- আরম্ভের সময় স্বয়ংক্রিয় ট্রান্সপিলেশনের জন্য টাইপস্ক্রিপ্ট প্রকল্প তৈরি এবং কনফিগার করুন (
firebase init functions)। - একটি প্রিডপ্লয় হুকের মাধ্যমে স্থাপনের সময় বিদ্যমান টাইপস্ক্রিপ্ট সোর্সকে জাভাস্ক্রিপ্টে স্থানান্তর করুন।
এই নির্দেশিকায় দেওয়া নির্দেশাবলী অনুসরণ করে, আপনি একটি বিদ্যমান জাভাস্ক্রিপ্ট প্রকল্প টাইপস্ক্রিপ্টে স্থানান্তর করতে পারেন এবং আপনার সোর্স কোড ট্রান্সপাইল করার জন্য একটি প্রিডপ্লয় হুক ব্যবহার করে ফাংশন স্থাপন চালিয়ে যেতে পারেন। ফাংশন লেখার সময় টাইপস্ক্রিপ্ট ভ্যানিলা জাভাস্ক্রিপ্টের তুলনায় অনেক সুবিধা প্রদান করে:
- টাইপস্ক্রিপ্ট অ্যাসিঙ্ক/অপেক্ষার মতো সর্বশেষ জাভাস্ক্রিপ্ট বৈশিষ্ট্যগুলিকে সমর্থন করে, প্রতিশ্রুতি ব্যবস্থাপনাকে সহজ করে তোলে।
- কোডিং করার সময় একটি Cloud Functions লিন্টার সাধারণ সমস্যাগুলি তুলে ধরে
- টাইপ সেফটি আপনাকে ডিপ্লয়েড ফাংশনে রানটাইম ত্রুটি এড়াতে সাহায্য করে।
আপনি যদি টাইপস্ক্রিপ্টে নতুন হন, তাহলে টাইপস্ক্রিপ্ট ইন 5 মিনিট দেখুন।
টাইপস্ক্রিপ্ট দিয়ে একটি নতুন 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-এ নমুনাটি আনকমেন্ট করুন এবং npm run serve রান করুন যাতে "Hello World" ফাংশনটি কার্যকর হয়।
একটি বিদ্যমান টাইপস্ক্রিপ্ট প্রকল্প ব্যবহার করা
যদি আপনার একটি টাইপস্ক্রিপ্ট প্রকল্প থাকে, তাহলে আপনি একটি প্রিডপ্লয় হুক যোগ করতে পারেন যাতে আপনার কোডটি প্রতিবার Cloud Functions for Firebase এ স্থাপন করার সময় ট্রান্সপাইল করা হয়। আপনার একটি সঠিকভাবে তৈরি 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 কমান্ড আপনার TypeScript কোড তৈরি করে এবং এটিকে ফাংশন হিসেবে স্থাপন করে।
একটি বিদ্যমান জাভাস্ক্রিপ্ট প্রকল্পকে টাইপস্ক্রিপ্টে স্থানান্তর করা হচ্ছে
যদি আপনার কাছে জাভাস্ক্রিপ্টে শুরু এবং ডেভেলপ করা কোনও 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এ, টাইপস্ক্রিপ্টের জন্য নিম্নলিখিত ধরণের একটি বিল্ড স্ক্রিপ্ট যুক্ত করুন:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...npm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parserচালিয়ে"typescript"dev dependence হিসেবে যোগ করুন।সকল নির্ভরতার জন্য,
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 তে অথবা নোড মডিউলের মাধ্যমে ব্যবহার করতে পারেন।