في Nodejs، يتم استخدام الأرشيف لضغط بعض الملفات وتعبئتها في حزم مضغوطة بتنسيق ZIP أو تنسيق TA؛ أرشيفي هو وحدة يمكنها تنفيذ وظائف التعبئة عبر الأنظمة الأساسية " بيان قم بتثبيت هذه الوحدة قبل الاستخدام.
بيئة تشغيل هذه المقالة: نظام Windows 10، إصدار Nodejs 12.19.0، كمبيوتر Dell G3.
نحتاج أحيانًا إلى ضغط بعض الملفات وتعبئتها في حزم مضغوطة بتنسيق Zip أو بتنسيق tar، وقد نحتاج أيضًا إلى حزم الأدلة. في Node.js، يمكنك استخدام أرشيف الحزم التابع لجهة خارجية لتنفيذ العمليات.
Archiver عبارة عن وحدة يمكنها تحقيق وظيفة التغليف عبر الأنظمة الأساسية في Nodejs، ويمكنها إنشاء حزم ZIP و TA، وهي وحدة طرف ثالث سهلة الاستخدام نسبيًا.
قم بتثبيت وحدة الأرشيف قبل الاستخدام.
الرمز هو كما يلي:
أرشيف تثبيت npmمقدمة:
// نظرًا لأن الملف يحتاج إلى القراءة، فإن الوحدة fs مطلوبة، ويجب أيضًا استيراد const fs = require('fs');الاستخدام الأساسي هو كما يلي:
// الخطوة الأولى، استيراد الوحدات الضرورية const fs = require('fs'); const archiver = require('archiver'); // الخطوة الثانية، إنشاء دفق قابل للكتابة لكتابة البيانات constput = fs.createWriteStream ( __dirname + "/hello.zip");// احفظ الحزمة المضغوطة في دليل المشروع الحالي، وتم تسمية الحزمة المضغوطة test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//ضبط مستوى الضغط//الخطوة الثالثة هي إنشاء اتصال خط أنابيب archive.pipe(output);//الخطوة الرابعة هي ضغط الملف المحدد varstream = fs.createReadStream(__dirname + "/hello. txt");// اقرأ hello.txtarchive.append(stream, {name: 'hello.txt'});// الخطوة الخامسة هي إكمال الضغط archive.finalize(); بعد تنفيذ التعليمات البرمجية بنجاح، سيتم إنشاء حزمة مضغوطة تسمى hello.zip في الدليل الذي يوجد به المشروع. تحتوي الحزمة المضغوطة على الملف المضغوط hello.txt.
يمكن تشغيل الملفات المضغوطة باستخدام archive.append() و archive.file().
واجهة برمجة التطبيقات (API) لضغط ملف واحد هي كما يلي:
// أضف ملفًا إلى الحزمة المضغوطة واقرأ البيانات من خلال دفق قابل للكتابة Const file1 = __dirname + '/file1.txt';archive.append(fs.createReadStream(file1), { name: 'file1.txt ' } );// أضف ملفًا إلى الحزمة المضغوطة وألحق الملف عن طريق كتابة السلسلة إلى الملف archive.append('string Cheese!', { name: 'file2.txt' });// أضف ملفًا إلى الحزمة المضغوطة الحزمة، قم بإلحاق الملف من خلال بيانات المخزن المؤقت const buffer3 = Buffer.from('buff it!');archive.append(buffer3, { name: 'file3.txt' });// أضف ملفًا إلى حزمة الحزمة المضغوطة، قم بتمرير مسار الملف مباشرة archive.file('file1.txt', { name: 'file4.txt' });المثال الكامل هو كما يلي:
// الخطوة الأولى، استيراد الوحدات الضرورية const fs = require('fs'); const archiver = require('archiver'); // الخطوة الثانية، إنشاء دفق قابل للكتابة لكتابة البيانات constput = fs.createWriteStream ( __dirname + "/hello.zip");// احفظ الحزمة المضغوطة في دليل المشروع الحالي، وتم تسمية الحزمة المضغوطة test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;// تعيين مستوى الضغط// الخطوة الثالثة هي إنشاء اتصال خط الأنابيب archive.pipe(output);// الخطوة الرابعة هي ضغط الملف المحدد archive.append(fs.createReadStream(__dirname + '/hello .txt'), { name: 'hello.txt'});// دفق الملف archive.append('index.html', {name: 'index.html'});// مسار الملف archive.append(Buffer .from("هذه بيانات بتنسيق المخزن المؤقت"), {name: 'buffer.txt'});// كائن المخزن المؤقت archive.append("تمرير السلسلة مباشرة"، {name: 'string.txt'}) ;// String/ / الخطوة الخامسة هي إكمال الضغط archive.finalize(); ملاحظة: المعلمة الثانية {name: 'hello.txt'} من archive.append() هي إعادة تسمية الملف المقابل في الحزمة المضغوطة.
إذا كنت تريد ضغط ملفات متعددة، فما عليك سوى استدعاء الأسلوب archive.append() لإلحاق الملفات، وستتم إضافة هذه الملفات الإضافية إلى الحزمة المضغوطة. على سبيل المثال:
// الخطوة الأولى، استيراد الوحدات الضرورية const fs = require('fs'); const archiver = require('archiver'); // الخطوة الثانية، إنشاء دفق قابل للكتابة لكتابة البيانات constput = fs.createWriteStream ( __dirname + "/hello.zip");// احفظ الحزمة المضغوطة في دليل المشروع الحالي، وتم تسمية الحزمة المضغوطة test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;// تعيين مستوى الضغط// الخطوة الثالثة هي إنشاء اتصال خط أنابيب archive.pipe(output);// الخطوة الرابعة هي ضغط ملفات متعددة في حزمة مضغوطة archive.append('index.html', {name: 'index.html'});archive.append('hello.js', {name: 'hello.js'});archive.append('hello.html', {name: 'hello.html' });archive .append('db.json', {name: 'db.json'});// الخطوة الخامسة هي إكمال الضغط archive.finalize();إذا كنت تريد ضغط دليل، فستحتاج إلى استخدام archive.directory() للقيام بذلك. واجهة برمجة التطبيقات هي كما يلي:
// قم بتعبئة الدليل المحدد وضغطه في حزمة مضغوطة، وأعد تسميته إلى new-subdir، وجميع الملفات الموجودة في دليل subdir لا تزال في دليل subdir الجديد، وليس في الدليل الجذر للحزمة المضغوطة archive.directory( 'subdir /', 'new-subdir');// قم بتعبئة جميع الملفات الموجودة في الدليل المحدد وضغطها في حزمة مضغوطة، وتكون هذه الملفات في الدليل الجذر للحزمة المضغوطة، وليس في الدليل الفرعي archive.directory(' فرعي/'، خطأ)؛المثال الكامل هو كما يلي:
// الخطوة الأولى، استيراد الوحدات الضرورية const fs = require('fs'); const archiver = require('archiver'); // الخطوة الثانية، إنشاء دفق قابل للكتابة لكتابة البيانات constput = fs.createWriteStream ( __dirname + "/hello.zip");// احفظ الحزمة المضغوطة في دليل المشروع الحالي، وتم تسمية الحزمة المضغوطة test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;// تعيين مستوى الضغط// الخطوة الثالثة هي إنشاء اتصال خط أنابيب archive.pipe(output);// الخطوة الرابعة هي ضغط الدليل في حزمة مضغوطة archive.directory('public/', ' new-public'); archive.directory('demo/', false);// الخطوة الخامسة هي إكمال الضغط archive.finalize();التعلم الموصى به: "الفيديو التعليمي لـnodejs"
ما ورد أعلاه هو تفاصيل كيفية استخدام الأرشيف في العقدة لمزيد من المعلومات، يرجى الانتباه إلى المقالات الأخرى ذات الصلة على هذا الموقع!