Cloud फ़ंक्शन के लिए TypeScript का इस्तेमाल करना

जो डेवलपर TypeScript में फ़ंक्शन लिखना पसंद करते हैं, Cloud Functions देखने की सुविधा दो तरह की सहायता करती है:

  • शुरू करने के समय, अपने-आप ट्रांसपिलेशन के लिए TypeScript प्रोजेक्ट बनाएं और कॉन्फ़िगर करें (firebase init functions).
  • एक preDeploy हुक के ज़रिए परिनियोजन के समय मौजूदा TypeScript स्रोत को JavaScript में ट्रांसप करें.

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

  • TypeScript, प्रॉमिस मैनेजमेंट को आसान बनाकर, एसिंक/अवेट जैसी नई JavaScript सुविधाओं के साथ काम करता है
  • कोडिंग के दौरान, Cloud Functions लिंटर की मदद से सामान्य समस्याओं को हाइलाइट किया जाता है
  • टाइप सेफ़्टी की मदद से, डिप्लॉय किए गए फ़ंक्शन में रनटाइम की गड़बड़ियों से बचा जा सकता है

अगर आपने टाइपस्क्रिप्ट का इस्तेमाल पहले कभी नहीं किया है, तो पांच मिनट में टाइपस्क्रिप्ट देखें.

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 में सैंपल की टिप्पणी को हटाएं और उसे चलाएं "नमस्ते दुनिया" देखने के लिए npm run serve फ़ंक्शन का इस्तेमाल कैसे किया जा सकता है.

किसी मौजूदा TypeScript प्रोजेक्ट का इस्तेमाल करना

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

  1. package.json में बदलाव करके, बैश स्क्रिप्ट जोड़ें और अपना TypeScript प्रोजेक्ट बनाएं. उदाहरण के लिए:

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

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

इस कॉन्फ़िगरेशन के साथ, एक firebase deploy --only functions निर्देश आपका TypeScript कोड बनाता है और उसे फ़ंक्शन के तौर पर डिप्लॉय करता है.

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

अगर आपके पास कोई ऐसा मौजूदा Cloud Functions प्रोजेक्ट है जिसे आपने शुरू किया है और इसे JavaScript में डेवलप किया गया है, तो आप उसे TypeScript. आपको एक git Checkpoint या दूसरा खाता बनाने की सलाह दी जाती है बैकअप लें.

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

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

     {
       "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 में लिखें.

TypeScript फ़ंक्शन को एम्युलेट करना

TypeScript फ़ंक्शन को स्थानीय तौर पर टेस्ट करने के लिए, यहां दिए गए एम्युलेशन टूल का इस्तेमाल किया जा सकता है फ़ंक्शन स्थानीय तौर पर चलाएं में जाएं. यह ज़रूरी है कि इन टूल का इस्तेमाल करने से पहले अपना कोड कंपाइल करें. इसलिए, npm run build ज़रूर चलाएं firebase emulators:start चलाने से पहले या firebase functions:shell. इसके अलावा, 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 में या नोड मॉड्यूल के ज़रिए जोड़ें.