Node.js बैकएंड विकास बूटकैंप · पाठ

tsx, हॉट रीलोड और सोर्स मैप से तेज़ पुनरावृत्ति

तुरंत ट्रांसपाइलेशन, वॉच मोड और सटीक स्टैक ट्रेस से सहज विकास चक्र स्थापित कीजिए।

पाठ 4, कुल 4 में से13 चरण

tsx, हॉट रीलोड और सोर्स मैप से तेज़ पुनरावृत्ति, CoddyKit पर Node.js बैकएंड विकास बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Node.js बैकएंड विकास बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Node.js बैकएंड विकास बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

धीमे Dev Loop की समस्या

जब आप TypeScript में Node.js backend लिखते हैं, तो सामान्य workflow कष्टदायक होता है: एक file edit करें, JavaScript में compile करने के लिए tsc चलाएँ, फिर node dist/index.js चलाएँ और हर बदलाव पर इसे दोहराएँ।

इससे तीन जगह रुकावट आती है:

  • Transpile step — कुछ भी चलने से पहले पूरे project के build होने का इंतज़ार करना पड़ता है।
  • Restart step — process को manually बंद करके फिर शुरू करना पड़ता है।
  • Debugging — errors आपके वास्तविक source के बजाय compiled dist/*.js की line numbers दिखाते हैं।

इस lesson में हम बिना रुकावट वाला loop तैयार करेंगे: tsx के साथ on-the-fly transpilation, watch mode के साथ automatic restarts और source maps के साथ सटीक stack traces।

tsx वास्तव में क्या करता है

tsx ("TypeScript Execute") एक CLI है, जो TypeScript और ESM फ़ाइलों को सीधे चलाता है और इसके लिए अलग से बिल्ड चरण की आवश्यकता नहीं होती। अंदरूनी तौर पर यह esbuild का उपयोग करके प्रत्येक मॉड्यूल को Node द्वारा लोड किए जाने पर मेमोरी में ट्रांसपाइल करता है।

याद रखने योग्य मुख्य बातें:

  • यह टाइप-जाँच नहीं करता — esbuild केवल टाइप हटाकर JS उत्सर्जित करता है। CI में टाइप सुरक्षा के लिए आप tsc --noEmit का उपयोग जारी रखते हैं।
  • यह .ts और आधुनिक ESM import सिंटैक्स, दोनों को पारदर्शी ढंग से संभालता है।
  • इसका उद्देश्य विकास और स्क्रिप्ट हैं, उत्पादन रनटाइम के रूप में इसका उपयोग नहीं किया जाना चाहिए।

इसे विकास-निर्भरता के रूप में इंस्टॉल करें:

// package.json (dev dependency install)
// npm install --save-dev tsx

// Then run any TypeScript file directly:
// npx tsx src/index.ts

// No tsconfig 'outDir', no dist/ folder needed during dev.

फ़ाइल को सीधे चलाना

tsx का सबसे सरल उपयोग node की जगह tsx का उपयोग करना है। TypeScript के प्रवेश-बिंदु को सीधे चलाने पर tsx उसे चलते समय ट्रांसपाइल करता है।

यह एक बहुत छोटी स्वतंत्र स्क्रिप्ट है। इसका तर्क स्वयं सादा JavaScript है, जिसे आप कहीं भी चला सकते हैं; tsx के साथ आप यही चीज़ .ts फ़ाइल में टाइप के साथ लिखेंगे और निष्पादन से पहले tsx उन टाइप को हटा देगा।

function greet(name) {
  return `Hello, ${name}! Server starting...`;
}

const port = process.env.PORT || 3000;
console.log(greet('developer'));
console.log(`Would listen on port ${port}`);

वॉच मोड: स्वचालित पुनःआरंभ

सबसे अधिक समय बचाने वाली सुविधा tsx watch है। यह आपका प्रोग्राम शुरू करता है, निर्भरता ग्राफ़ की प्रत्येक फ़ाइल पर नज़र रखता है और स्रोत फ़ाइल में बदलाव होते ही प्रक्रिया को स्वचालित रूप से पुनःआरंभ करता है।

यह पुराने उपकरणों जैसे nodemon + ts-node की जगह एक तेज़ कमांड देता है। अब हर संपादन के बाद आपको Ctrl+C दबाकर फिर से चलाने की आवश्यकता नहीं होती।

इसे अपनी package.json स्क्रिप्ट में जोड़ें, ताकि पूरी टीम एक ही कमांड का उपयोग करे:

{
  "name": "my-api",
  "type": "module",
  "scripts": {
    "dev": "tsx watch src/index.ts",
    "start": "node dist/index.js",
    "typecheck": "tsc --noEmit",
    "build": "tsc"
  }
}

वॉच किए जा सकने वाला सर्वर प्रवेश-बिंदु

यह एक न्यूनतम HTTP सर्वर प्रवेश-बिंदु है, जिसे आप tsx watch के साथ चलाएंगे। किसी भी हैंडलर को संपादित करने पर tsx प्रक्रिया को मिलीसेकंड में पुनःआरंभ कर देता है, इसलिए नया कोड लगभग तुरंत सक्रिय हो जाता है।

ध्यान दें कि इसमें केवल Node का अंतर्निहित http मॉड्यूल उपयोग हुआ है — न Express, न कोई फ़्रेमवर्क। आपके द्वारा आयात की जाने वाली लाइब्रेरी चाहे जो हों, tsx उसी तरह काम करता है।

import { createServer } from 'node:http';

const server = createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'application/json' });
  res.end(JSON.stringify({ message: 'Edit me and tsx restarts!' }));
});

server.listen(3000, () => {
  console.log('Listening on http://localhost:3000');
});

आपको अब भी टाइप-जाँच की आवश्यकता क्यों है

क्योंकि tsx (esbuild के माध्यम से) केवल टाइप हटाता है, इसलिए यह टाइप त्रुटियों वाले कोड को भी बिना समस्या चलाएगा। दोहराकर विकास करने के लिए यह गति बहुत उपयोगी है, लेकिन यदि यही आपकी एकमात्र सुरक्षा व्यवस्था हो, तो यह जोखिमपूर्ण है।

सामान्य तरीका दो समानांतर व्यवस्थाओं का होता है:

  • तेज़ चक्र: कोड लिखते समय तुरंत प्रतिक्रिया के लिए tsx watch।
  • शुद्धता जाँच: वास्तविक टाइप त्रुटियाँ पकड़ने के लिए अलग टर्मिनल या CI में tsc --noEmit।

आप tsx के साथ-साथ टाइप-जाँचकर्ता को वॉच मोड में भी चला सकते हैं:

// Terminal 1 — run + restart on change (no type errors caught)
// npm run dev        ->  tsx watch src/index.ts

// Terminal 2 — continuous type checking
// npx tsc --noEmit --watch

// CI pipeline step
// npm run typecheck   ->  tsc --noEmit

हॉट रीलोड बनाम पुनःआरंभ

यह स्पष्ट समझना उपयोगी है: tsx watch स्थान पर मॉड्यूल के हॉट प्रतिस्थापन (HMR) के बजाय प्रक्रिया का पूरा पुनःआरंभ करता है। पूरी Node प्रक्रिया समाप्त होती है और एक नई प्रक्रिया शुरू होती है।

बैकएंड API के लिए लगभग हमेशा यही वांछित तरीका होता है:

  • स्थिति को साफ़ तौर पर फिर से बनाया जाता है, जिससे पुराने मॉड्यूल या लीक हुए लिस्नर से बचा जा सके।
  • पुनःआरंभ तेज़ होते हैं, क्योंकि केवल बदले हुए मॉड्यूल ही दोबारा ट्रांसपाइल किए जाते हैं।

वास्तविक HMR कुछ फ़्रेमवर्क में उपलब्ध है, लेकिन इससे जटिलता और सूक्ष्म त्रुटियाँ बढ़ती हैं। अधिकांश Node बैकएंड के लिए तेज़ और साफ़ पुनःआरंभ अधिक सरल और सुरक्षित है।

साफ़ पुनःआरंभ के लिए सुचारु शटडाउन

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

इसके बिना, धीरे बंद होने वाला सर्वर पोर्ट को उपयोग में छोड़ सकता है और पुनःआरंभ की गई प्रक्रिया EADDRINUSE के साथ क्रैश हो सकती है।

import { createServer } from 'node:http';

const server = createServer((req, res) => res.end('ok'));
server.listen(3000);

function shutdown() {
  console.log('Closing server before restart...');
  server.close(() => process.exit(0));
}

process.on('SIGTERM', shutdown);
process.on('SIGINT', shutdown);

स्रोत मैप: सटीक स्टैक ट्रेस

जब कोड ट्रांसपाइल किया जाता है, तो त्रुटि की पंक्ति और कॉलम आपके TypeScript के बजाय उत्पन्न JavaScript से संबंधित होते हैं। स्रोत मैप ऐसी मैपिंग फ़ाइलें हैं, जो उत्पन्न स्थानों को आपके मूल स्रोत पर वापस मैप करती हैं।

tsx के लिए अच्छी बात यह है कि यह स्रोत मैप अपने-आप बनाकर लागू करता है, इसलिए उठाई गई त्रुटियाँ सीधे आपकी वास्तविक .ts पंक्तियों की ओर संकेत करती हैं।

tsc से बनाए गए उत्पादन बंडल के लिए आपको tsconfig.json के माध्यम से इसे स्पष्ट रूप से सक्षम करना होगा:

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "outDir": "dist",
    "sourceMap": true,
    "strict": true
  }
}

रनटाइम पर स्रोत मैप सक्षम करना

.map फ़ाइलें बनाना इस प्रक्रिया का केवल आधा हिस्सा है। स्टैक ट्रेस को फ़ॉर्मैट करते समय Node को उनका उपयोग करने के लिए बताया जाना चाहिए। आधुनिक Node --enable-source-maps फ़्लैग का समर्थन करता है।

इसके साथ, dist/index.js में हुए क्रैश के स्टैक ट्रेस में मूल src/index.ts फ़ाइल का नाम और पंक्ति दिखाई देती है। इसे अपनी उत्पादन प्रारंभ स्क्रिप्ट में जोड़ें:

{
  "scripts": {
    "dev": "tsx watch src/index.ts",
    "build": "tsc",
    "start": "node --enable-source-maps dist/index.js"
  }
}

स्रोत-मैप किया गया ट्रेस देखना

स्रोत मैप क्यों महत्वपूर्ण हैं, यह समझने के लिए यहाँ एक पूरा प्रोग्राम है, जो नेस्टेड कॉल के भीतर से त्रुटि उत्पन्न करता है। चलाने पर स्टैक ट्रेस प्रत्येक फ़ंक्शन और उस विफलता वाली पंक्ति को सूचीबद्ध करता है।

स्रोत मैप के बिना ट्रांसपाइल किए गए प्रोजेक्ट में ये पंक्ति संख्याएँ संकलित आउटपुट की होतीं और उपयोगी नहीं रहतीं। tsx (या --enable-source-maps) के साथ वे आपके मूल स्रोत पर वापस मैप हो जाती हैं।

function loadConfig() {
  throw new Error('Missing DATABASE_URL');
}

function startServer() {
  return loadConfig();
}

try {
  startServer();
} catch (err) {
  console.error('Startup failed:', err.message);
  console.error(err.stack);
}

त्वरित जाँच

आप TypeScript Node.js API के लिए विकास और उत्पादन कार्यप्रवाह तैयार कर रहे हैं। प्रत्येक उपकरण क्या करता है, उसके आधार पर उत्तर दें।

पुनरावलोकन

आपने Node.js बैकएंड के लिए TypeScript का सहज विकास चक्र बनाया:

  • tsx esbuild के साथ .ts और ESM को सीधे चलाता है — अलग बिल्ड चरण की आवश्यकता नहीं होती, लेकिन टाइप-जाँच भी नहीं होती।
  • tsx watch प्रत्येक फ़ाइल परिवर्तन पर प्रक्रिया को अपने-आप पुनःआरंभ करता है और nodemon + ts-node की जगह एक तेज़ कमांड देता है।
  • वॉच मोड साफ़ तौर पर पूरा पुनःआरंभ करता है, इसलिए सुचारु शटडाउन (SIGTERM/SIGINT) जोड़ें, ताकि EADDRINUSE से बचा जा सके।
  • CI में tsc --noEmit से शुद्धता बनाए रखें और tsc से उत्पादन बिल्ड बनाएँ।
  • स्रोत मैप त्रुटियों को आपके वास्तविक स्रोत पर वापस मैप करते हैं: tsx उन्हें अपने-आप लागू करता है, जबकि उत्पादन के लिए sourceMap: true और node --enable-source-maps आवश्यक हैं।

परिणाम: संपादित करें, सहेजें और लगभग तुरंत सही व्यवहार तथा सटीक स्टैक ट्रेस देखें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ JavaScript सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
22
पाठ
92

अक्सर पूछे जाने वाले प्रश्न

क्या “tsx, हॉट रीलोड और सोर्स मैप से तेज़ पुनरावृत्ति” पाठ निःशुल्क है?

हाँ—“tsx, हॉट रीलोड और सोर्स मैप से तेज़ पुनरावृत्ति” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Node.js बैकएंड विकास बूटकैंप पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Node.js बैकएंड विकास बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“tsx, हॉट रीलोड और सोर्स मैप से तेज़ पुनरावृत्ति” में मैं क्या सीखूँगा?

तुरंत ट्रांसपाइलेशन, वॉच मोड और सटीक स्टैक ट्रेस से सहज विकास चक्र स्थापित कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Node.js बैकएंड विकास बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Node.js बैकएंड विकास बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Node.js बैकएंड विकास बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“tsx, हॉट रीलोड और सोर्स मैप से तेज़ पुनरावृत्ति” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Node.js बैकएंड विकास बूटकैंप पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Node.js बैकएंड विकास बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. CommonJS से नेटिव ES मॉड्यूल में स्थानांतरण
  2. Node बैकएंड परियोजनाओं के लिए tsconfig कॉन्फ़िगर करना
  3. टाइप-सुरक्षित पर्यावरण कॉन्फ़िगरेशन और रनटाइम सत्यापन
  4. tsx, हॉट रीलोड और सोर्स मैप से तेज़ पुनरावृत्ति
← Node.js बैकएंड विकास बूटकैंप पर वापस जाएँ