क्लाउड फ़ंक्शंस के लिए टाइपस्क्रिप्ट का उपयोग करें

उन डेवलपर्स के लिए जो टाइपस्क्रिप्ट में फ़ंक्शन लिखना पसंद करते हैं, क्लाउड फ़ंक्शंस दो प्रकार का समर्थन प्रदान करता है:

  • आरंभीकरण ( firebase init functions ) पर स्वचालित ट्रांसपिलेशन के लिए टाइपस्क्रिप्ट प्रोजेक्ट बनाएं और कॉन्फ़िगर करें।
  • प्रीडिप्लॉय हुक के माध्यम से तैनाती के समय मौजूदा टाइपस्क्रिप्ट स्रोत को जावास्क्रिप्ट में ट्रांसपाइल करें।

इस गाइड में दिए गए निर्देशों का पालन करते हुए, आप मौजूदा जावास्क्रिप्ट प्रोजेक्ट को टाइपस्क्रिप्ट में स्थानांतरित कर सकते हैं और अपने स्रोत कोड को ट्रांसपाइल करने के लिए प्रीडिप्लॉय हुक का उपयोग करके फ़ंक्शंस को तैनात करना जारी रख सकते हैं। फ़ंक्शन लिखते समय टाइपस्क्रिप्ट वेनिला जावास्क्रिप्ट की तुलना में कई लाभ प्रदान करता है:

  • टाइपस्क्रिप्ट वादा प्रबंधन को सरल बनाते हुए एसिंक/प्रतीक्षा जैसी नवीनतम जावास्क्रिप्ट सुविधाओं का समर्थन करता है
  • जब आप कोडिंग कर रहे होते हैं तो क्लाउड फ़ंक्शंस लिंटर सामान्य समस्याओं को उजागर करता है
  • प्रकार सुरक्षा आपको तैनात कार्यों में रनटाइम त्रुटियों से बचने में मदद करती है

यदि आप टाइपस्क्रिप्ट में नए हैं, तो 5 मिनट में टाइपस्क्रिप्ट देखें।

टाइपस्क्रिप्ट के साथ एक नया क्लाउड फ़ंक्शंस प्रोजेक्ट प्रारंभ करना

एक नई निर्देशिका में 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 चलाएँ।

मौजूदा टाइपस्क्रिप्ट प्रोजेक्ट का उपयोग करना

यदि आपके पास एक मौजूदा टाइपस्क्रिप्ट प्रोजेक्ट है, तो आप यह सुनिश्चित करने के लिए एक प्रीडिप्लॉय हुक जोड़ सकते हैं कि जब भी आप फायरबेस के लिए क्लाउड फ़ंक्शंस पर अपना कोड तैनात करते हैं तो आपका प्रोजेक्ट ट्रांसपिल्ड हो जाता है। आपको एक उचित रूप से बनाई गई tsconfig.json फ़ाइल और एक फ़ायरबेस प्रोजेक्ट की आवश्यकता होगी, और आपको अपने फ़ायरबेस कॉन्फ़िगरेशन में निम्नलिखित संशोधन करने होंगे:

  1. अपना टाइपस्क्रिप्ट प्रोजेक्ट बनाने के लिए बैश स्क्रिप्ट जोड़ने के लिए package.json संपादित करें। उदाहरण के लिए:

     {
       "name": "functions",
       "scripts": {
         "build": "npm run lint && tsc"
       }
     ...
    
  2. बिल्ड स्क्रिप्ट को चलाने के लिए प्रीडिप्लॉय हुक जोड़ने के लिए firebase.json संपादित करें। उदाहरण के लिए:

     {
       "functions": {
         "predeploy": "npm --prefix functions run build",
       }
     }
    

इस कॉन्फ़िगरेशन के साथ, एक firebase deploy --only functions कमांड आपका टाइपस्क्रिप्ट कोड बनाता है और इसे फ़ंक्शन के रूप में तैनात करता है।

मौजूदा जावास्क्रिप्ट प्रोजेक्ट को टाइपस्क्रिप्ट में माइग्रेट करना

यदि आपके पास मौजूदा क्लाउड फ़ंक्शंस प्रोजेक्ट है जिसे आपने जावास्क्रिप्ट में आरंभ और विकसित किया है, तो आप इसे टाइपस्क्रिप्ट में स्थानांतरित कर सकते हैं। आपको शुरू करने से पहले एक गिट चेकपॉइंट या अन्य बैकअप बनाने के लिए दृढ़ता से प्रोत्साहित किया जाता है।

मौजूदा जावास्क्रिप्ट क्लाउड फ़ंक्शंस प्रोजेक्ट को माइग्रेट करने के लिए:

  1. एक गिट चेकपॉइंट बनाएं और अपनी मौजूदा जावास्क्रिप्ट स्रोत फ़ाइलों की प्रतियां सहेजें।
  2. प्रोजेक्ट निर्देशिका में, firebase init functions चलाएँ और फ़ंक्शंस लिखने के लिए भाषा के लिए संकेत मिलने पर TypeScript चयन करें।
  3. जब पूछा जाए कि क्या मौजूदा package.json फ़ाइल को अधिलेखित करना है, तो नहीं का चयन करें जब तक कि आप सुनिश्चित न हों कि आप मौजूदा फ़ाइल को नहीं रखना चाहते हैं।
  4. functions/src निर्देशिका में index.ts हटाएं, इसे अपने मौजूदा स्रोत कोड से बदलें।
  5. आरंभीकरण के समय बनाई गई tsconfig.json फ़ाइल में, जावास्क्रिप्ट को अनुमति देने के लिए कंपाइलर विकल्प सेट करें: "allowJs": true
  6. अपनी सहेजी गई package.json फ़ाइल को functions निर्देशिका में कॉपी करें, और इसे "main" "lib/index.js" पर सेट करने के लिए संपादित करें।
  7. इसके अलावा package.json में, निम्न की तरह टाइपस्क्रिप्ट के लिए एक बिल्ड स्क्रिप्ट जोड़ें:

     {
       "name": "functions",
       "scripts": {
         "build": "npm run lint && tsc"
       }
     ...
    
  8. npm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser चलाकर "typescript" एक देव निर्भरता के रूप में जोड़ें।

  9. सभी निर्भरताओं के लिए, npm install --save @types/<dependency> चलाएँ।

  10. इच्छानुसार स्रोत कोड को .js से .ts तक पुनः लिखें।

टाइपस्क्रिप्ट फ़ंक्शंस का अनुकरण

टाइपस्क्रिप्ट फ़ंक्शंस का स्थानीय रूप से परीक्षण करने के लिए, आप स्थानीय रूप से रन फ़ंक्शंस में वर्णित इम्यूलेशन टूल का उपयोग कर सकते हैं। इन उपकरणों का उपयोग करने से पहले अपने कोड को संकलित करना महत्वपूर्ण है, इसलिए firebase emulators:start या firebase functions:shell चलाने से पहले अपनी फ़ंक्शन निर्देशिका के अंदर 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 बनाता है। आप इस स्रोत मानचित्र का उपयोग अपने पसंदीदा आईडीई में या नोड मॉड्यूल के माध्यम से कर सकते हैं।