ts-morph का परिचय: यह क्या है और क्यों ज़रूरी है
ts-morph TypeScript के Abstract Syntax Tree (AST) के साथ प्रोग्रामेटिक रूप से काम करने के लिए एक शक्तिशाली लाइब्रेरी है। यह TypeScript कोड को विश्लेषण, संशोधन और जनरेट करने के लिए एक सुविधाजनक और सहज API प्रदान करता है। सीधे TypeScript Compiler API का उपयोग करने के विपरीत, ts-morph एक उच्च-स्तरीय इंटरफ़ेस प्रदान करता है जो कई नियमित कार्यों को काफी सरल बनाता है।
इस लाइब्रेरी की आवश्यकता क्यों है? कल्पना करें कि आपको यह करना है:
- कोड रिफैक्टरिंग: किसी फ़ंक्शन के सभी उपयोगों को स्वचालित रूप से नाम बदलना, किसी मेथड का सिग्नेचर बदलना या किसी क्लास को दूसरी फ़ाइल में ले जाना।
- स्टैटिक विश्लेषण: सभी अप्रयुक्त वेरिएबल ढूँढना, कॉर्पोरेट कोडिंग नियमों के पालन की जाँच करना या प्रोजेक्ट संरचना के बारे में मेटाडेटा एकत्र करना।
- कोड जनरेशन: JSON स्कीमा के आधार पर टाइप बनाना, डेटाबेस के लिए CRUD ऑपरेशन जनरेट करना या स्वचालित रूप से दस्तावेज़ीकरण जोड़ना।
- डेवलपर टूल बनाना: लिंटर के लिए प्लगइन, कस्टम दस्तावेज़ीकरण जनरेटर या कोड माइग्रेशन उपयोगिता लिखना।
ts-morph TypeScript Compiler API की जटिलता को एब्सट्रैक्ट करता है और एक ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण प्रदान करता है। आप प्रोजेक्ट, फ़ाइल, क्लास, फ़ंक्शन और कोड के अन्य तत्वों के साथ सामान्य ऑब्जेक्ट की तरह काम करते हैं, न कि निम्न-स्तरीय AST नोड्स के साथ।
ts-morph की स्थापना (Installation)
लाइब्रेरी की स्थापना npm या yarn के माध्यम से की जाती है। यह Node.js के लिए एक पैकेज के रूप में उपलब्ध है।
npm install ts-morph
या, यदि आप yarn का उपयोग कर रहे हैं:
yarn add ts-morph
स्थापना के बाद, आप लाइब्रेरी को अपने प्रोजेक्ट में इम्पोर्ट कर सकते हैं:
import { Project } from 'ts-morph';
ts-morph को काम करने के लिए TypeScript की आवश्यकता होती है (यह peer dependency के रूप में निर्दिष्ट है)। सुनिश्चित करें कि आपके प्रोजेक्ट में TypeScript स्थापित है:
npm install typescript
कोड उदाहरण के साथ त्वरित शुरुआत
आइए एक सरल स्क्रिप्ट लिखें जो एक नई TypeScript फ़ाइल बनाती है, उसमें एक फ़ंक्शन जोड़ती है और फिर जनरेट किया गया कोड प्रदर्शित करती है।
import { Project, SyntaxKind } from 'ts-morph';
// एक नया प्रोजेक्ट बनाएं
const project = new Project({
useInMemoryFileSystem: true, // मेमोरी में काम करें, डिस्क पर सेव न करें
});
// एक नई फ़ाइल बनाएं
const sourceFile = project.createSourceFile('example.ts', '');
// एक फ़ंक्शन जोड़ें
const functionDeclaration = sourceFile.addFunction({
name: 'greet',
parameters: [{ name: 'name', type: 'string' }],
returnType: 'string',
statements: [
`return \`Hello, \${name}!\`;`,
],
});
// JSDoc कमेंट जोड़ें
functionDeclaration.addJsDoc({
description: 'उपयोगकर्ता का स्वागत करता है',
tags: [{ tagName: 'param', text: 'name - उपयोगकर्ता का नाम' }],
});
// जनरेट किया गया कोड प्रदर्शित करें
console.log(sourceFile.getText());
स्क्रिप्ट चलाने का परिणाम:
/**
* उपयोगकर्ता का स्वागत करता है
* @param name - उपयोगकर्ता का नाम
*/
function greet(name: string): string {
return `Hello, ${name}!`;
}
जैसा कि आप देख सकते हैं, हमने प्रोग्रामेटिक रूप से JSDoc दस्तावेज़ीकरण के साथ एक पूर्ण फ़ंक्शन बनाया है। यह ts-morph की क्षमताओं का एक छोटा सा हिस्सा है।
ts-morph के मुख्य तरीके और फ़ंक्शन
आइए विस्तृत विवरण और उदाहरणों के साथ लाइब्रेरी के 10 प्रमुख तरीकों पर नज़र डालें।
1. Project.createSourceFile()
यह क्या करता है: प्रोजेक्ट में एक नई TypeScript सोर्स फ़ाइल बनाता है। फ़ाइल खाली हो सकती है या इसमें शुरुआती कोड हो सकता है।
पैरामीटर:
filePath: string— फ़ाइल का पथ (प्रोजेक्ट रूट के सापेक्ष)।sourceText?: string— फ़ाइल की शुरुआती सामग्री (वैकल्पिक)।overwrite?: boolean— क्या मौजूदा फ़ाइल को ओवरराइट करना है (डिफ़ॉल्ट