TypeScript में ZIP/आर्काइव के साथ काम करना: लाइब्रेरीज़ का अवलोकन और व्यावहारिक उदाहरण
आधुनिक TypeScript वेब डेवलपमेंट में, अक्सर ZIP-आर्काइव के साथ काम करने की आवश्यकता होती है: क्लाइंट पर फ़ाइलों को पैक करना, सर्वर से प्राप्त डेटा को अनज़िप करना या आर्काइव की जटिल संरचनाएँ बनाना। इस लेख में हम दो सबसे लोकप्रिय लाइब्रेरीज़ — JSZip और adm-zip, उनकी क्षमताओं, TypeScript के लिए टाइपिज़ेशन और उपयोग के व्यावहारिक उदाहरणों पर चर्चा करेंगे।
1. JSZip — ब्राउज़र और Node.js के लिए सार्वभौमिक लाइब्रेरी
JSZip ZIP-आर्काइव बनाने, पढ़ने और संपादित करने के लिए एक शक्तिशाली लाइब्रेरी है, जो ब्राउज़र और Node.js दोनों वातावरणों में काम करती है। इसमें TypeScript के लिए पूर्ण समर्थन है।
स्थापना:
npm install jszipnpm install @types/jszip --save-dev1.1 ZIP-आर्काइव बनाना
import JSZip from 'jszip';
async function createArchive(): Promise<Blob> { const zip = new JSZip(); // टेक्स्ट फ़ाइल जोड़ें zip.file('hello.txt', 'Hello World!'); // फ़ाइल के साथ फ़ोल्डर जोड़ें const folder = zip.folder('images'); folder.file('logo.png', 'base64EncodedImageData...', {base64: true}); // आर्काइव जनरेट करें (ब्राउज़र के लिए Blob) const blob = await zip.generateAsync({type: 'blob'}); return blob;}1.2 आर्काइव पढ़ना और अनज़िप करना
async function readArchive(file: File): Promise<void> { const zip = new JSZip(); const content = await zip.loadAsync(file); // सभी फ़ाइलों को इटरेट करें content.forEach(async (relativePath, zipEntry) => { if (!zipEntry.dir) { const data = await zipEntry.async('string'); console.log(`फ़ाइल: ${relativePath}, सामग्री: ${data}`); } });}1.3 मेटाडेटा के साथ काम करना
JSZip आपको तिथियों, टिप्पणियों और एक्सेस अधिकारों को प्रबंधित करने की अनुमति देता है:
const zip = new JSZip();zip.file('document.txt', 'Text content', { date: new Date('2024-01-01'), comment: 'महत्वपूर्ण दस्तावेज़', unixPermissions: '644'});2. adm-zip — Node.js के लिए हल्का विकल्प
adm-zip Node.js पर सर्वर-साइड के लिए अनुकूलित लाइब्रेरी है। यह बड़े डेटा वॉल्यूम पर तेज़ काम करती है और इसमें सुविधाजनक API है।
स्थापना:
npm install adm-zipnpm install @types/adm-zip --save-dev2.1 आर्काइव बनाना
import AdmZip from 'adm-zip';
function createServerArchive(): void { const zip = new AdmZip(); // बफर से फ़ाइल जोड़ना zip.addFile('data.json', Buffer.from(JSON.stringify({key: 'value'}))); // स्थानीय फ़ाइल जोड़ना zip.addLocalFile('/path/to/file.txt'); // पूरा फ़ोल्डर जोड़ना zip.addLocalFolder('/path/to/folder', 'custom_folder_name'); // डिस्क पर लिखना zip.writeZip('archive.zip');}2.2 अनज़िप करना और निकालना
function extractArchive(): void { const zip = new AdmZip('./archive.zip'); // सभी फ़ाइलों को फ़ोल्डर में निकालना zip.extractAllTo('./extracted', true); // प्रविष्टियों की सूची प्राप्त करना const entries = zip.getEntries(); entries.forEach(entry => { console.log(`नाम: ${entry.entryName}, आकार: ${entry.header.size}`); // सामग्री प्राप्त करना const content = entry.getData().toString('utf8'); });}3. लाइब्रेरीज़ की तुलना
- JSZip — सार्वभौमिक, ब्राउज़र और Node.js में काम करता है, स्ट्रीमिंग जनरेशन का समर्थन करता है, मेटाडेटा के साथ काम करने के लिए समृद्ध API है।
- adm-zip — बड़े वॉल्यूम पर तेज़, सरल API, लेकिन केवल Node.js में काम करता है।
- प्रदर्शन: adm-zip >100 MB के आर्काइव के साथ काम करने में बेहतर है।
- टाइपिज़ेशन: दोनों में पूर्ण
पुस्तकालय में भी
TypeScript में PDF जनरेशन: Node.js के लिए लाइब्रेरीज़ और टूल्स
SQLDelight Kotlin: पूरी गाइड उदाहरणों के साथ
PHP में Markdown प्रसंस्करण और पार्सिंग: लाइब्रेरी और उपकरण
JavaScript (Node.js) में Event Bus और Observer पैटर्न: उदाहरण सहित
जावास्क्रिप्ट (Node.js) पर ईमेल भेजना: nodemailer, sendgrid, mailgun