TypeScript में ZIP/आर्काइव के साथ काम करना: JSZip और adm-zip के लिए पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

TypeScript में ZIP/आर्काइव के साथ काम करना: लाइब्रेरीज़ का अवलोकन और व्यावहारिक उदाहरण



आधुनिक TypeScript वेब डेवलपमेंट में, अक्सर ZIP-आर्काइव के साथ काम करने की आवश्यकता होती है: क्लाइंट पर फ़ाइलों को पैक करना, सर्वर से प्राप्त डेटा को अनज़िप करना या आर्काइव की जटिल संरचनाएँ बनाना। इस लेख में हम दो सबसे लोकप्रिय लाइब्रेरीज़ — JSZip और adm-zip, उनकी क्षमताओं, TypeScript के लिए टाइपिज़ेशन और उपयोग के व्यावहारिक उदाहरणों पर चर्चा करेंगे।



1. JSZip — ब्राउज़र और Node.js के लिए सार्वभौमिक लाइब्रेरी



JSZip ZIP-आर्काइव बनाने, पढ़ने और संपादित करने के लिए एक शक्तिशाली लाइब्रेरी है, जो ब्राउज़र और Node.js दोनों वातावरणों में काम करती है। इसमें TypeScript के लिए पूर्ण समर्थन है।



स्थापना:

npm install jszipnpm install @types/jszip --save-dev


1.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-dev


2.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 के आर्काइव के साथ काम करने में बेहतर है।
  • टाइपिज़ेशन: दोनों में पूर्ण

अनुशंसाएँ