Check out what’s new from Firebase at Google I/O 2022. Learn more

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

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

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

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

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

यदि आप टाइपस्क्रिप्ट में नए हैं, तो 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 npm run serve करें।

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

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

  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 कमांड आपके टाइपस्क्रिप्ट कोड को बनाता है और इसे फ़ंक्शन के रूप में तैनात करता है।

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

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

किसी मौजूदा JavaScript Cloud Functions प्रोजेक्ट को माइग्रेट करने के लिए:

  1. एक गिट चेकपॉइंट बनाएं और अपनी मौजूदा जावास्क्रिप्ट स्रोत फ़ाइलों की प्रतियां सहेजें।
  2. प्रोजेक्ट डायरेक्टरी में, TypeScript firebase init functions चलाएँ और लेखन कार्यों के लिए भाषा के लिए संकेत दिए जाने पर टाइपस्क्रिप्ट का चयन करें।
  3. यह पूछे जाने पर कि क्या मौजूदा package.json फ़ाइल को अधिलेखित करना है, नहीं का चयन करें जब तक कि आप सुनिश्चित न हों कि आप मौजूदा फ़ाइल को नहीं रखना चाहते हैं।
  4. निर्देशिका में index.ts हटाएं functions/src , इसे अपने मौजूदा स्रोत कोड से बदल दें।
  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 firebase deploy के दौरान, आपके प्रोजेक्ट की index.ts को index.js में स्थानांतरित कर दिया जाता है, जिसका अर्थ है कि Cloud Functions log आपके द्वारा लिखे गए कोड को नहीं, बल्कि index.js फ़ाइल से लाइन नंबर आउटपुट करेगा। index.ts में संबंधित पथ और लाइन नंबर ढूंढना आपके लिए आसान बनाने के लिए, index.ts firebase deploy functions/lib/index.js.map बनाता है। आप इस स्रोत मानचित्र का उपयोग अपने पसंदीदा आईडीई में या नोड मॉड्यूल के माध्यम से कर सकते हैं।