nodejs에서 archiver는 zip 형식이나 tar 형식의 압축 패키지로 일부 파일을 압축하고 패키징하는 데 사용됩니다. archiver는 플랫폼 전반에 걸쳐 패키징 기능을 구현할 수 있는 모듈입니다. 패키징 형식은 "npm install archiver"를 사용할 수 있습니다. "문 사용하기 전에 이 모듈을 설치하십시오.
이 문서의 운영 환경: Windows 10 시스템, nodejs 버전 12.19.0, Dell G3 컴퓨터.
때로는 일부 파일을 zip 형식이나 tar 형식의 압축 패키지로 압축하고 패키지해야 하며 디렉터리를 패키지해야 할 수도 있습니다. Node.js에서는 타사 패키지 아카이버를 사용하여 작업을 수행할 수 있습니다.
Archiver는 nodejs에서 크로스 플랫폼 패키징 기능을 구현할 수 있는 모듈로, 비교적 사용하기 쉬운 타사 모듈입니다.
사용하기 전에 아카이브 모듈을 설치하십시오.
코드는 다음과 같습니다:
npm 설치 아카이버소개:
// 파일을 읽어야 하기 때문에 fs 모듈이 필요하고, const fs = require('fs'); const archiver = require('archiver'); 도 가져와야 합니다.기본적인 사용법은 다음과 같습니다.
// 첫 번째 단계, 필요한 모듈 가져오기 const fs = require('fs'); const archiver = require('archiver'); // 두 번째 단계, 데이터를 쓰기 위한 쓰기 가능한 스트림 생성 const output = fs.createWriteStream ( __dirname + "/hello.zip");// 압축된 패키지를 현재 프로젝트 디렉터리에 저장하고, 압축된 패키지 이름은 test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//압축 수준 설정//세 번째 단계는 파이프라인 연결을 설정하는 것입니다. archive.pipe(output);//네 번째 단계는 지정된 파일을 압축하는 것입니다. var stream = fs.createReadStream(__dirname + "/hello. txt");// hello.txtarchive.append(stream, {name: 'hello.txt'}) 읽기;//다섯 번째 단계는 압축 아카이브를 완료하는 것입니다.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'); // 두 번째 단계, 데이터를 쓰기 위한 쓰기 가능한 스트림 생성 const output = fs.createWriteStream ( __dirname + "/hello.zip");// 압축된 패키지를 현재 프로젝트 디렉터리에 저장하고, 압축된 패키지 이름은 test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//압축 수준 설정//세 번째 단계는 파이프라인 연결을 설정하는 것입니다. archive.pipe(output);//네 번째 단계는 지정된 파일을 압축하는 것입니다. archive.append(fs.createReadStream(__dirname + '/hello .txt'), { 이름: 'hello.txt'});//파일 스트림 archive.append('index.html', {name: 'index.html'});//파일 경로 archive.append(Buffer .from("버퍼 형식의 데이터입니다."), {name: 'buffer.txt'});// 버퍼 객체 archive.append("문자열을 직접 전달합니다.", {name: 'string.txt'}) ;// String/ / 다섯 번째 단계는 압축 archive를 완료하는 것입니다.finalize();참고: archive.append()의 두 번째 매개변수 {name: 'hello.txt'}는 압축 패키지에서 해당 파일의 이름을 바꾸는 것입니다.
여러 파일을 압축하려면 archive.append() 메서드를 호출하여 파일을 추가하면 됩니다. 예를 들어:
// 첫 번째 단계, 필요한 모듈 가져오기 const fs = require('fs'); const archiver = require('archiver'); // 두 번째 단계, 데이터를 쓰기 위한 쓰기 가능한 스트림 생성 const output = fs.createWriteStream ( __dirname + "/hello.zip");// 압축된 패키지를 현재 프로젝트 디렉터리에 저장하고, 압축된 패키지 이름은 test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//압축 수준 설정//세 번째 단계는 파이프라인 연결을 설정하는 것입니다. archive.pipe(output);//네 번째 단계는 여러 파일을 압축 패키지로 압축하는 것입니다. archive.append('index.html', {이름: ' index.html'});archive.append('hello.js', {이름: 'hello.js'});archive.append('hello.html', {이름: 'hello.html' });archive .append('db.json', {name: 'db.json'});// 다섯 번째 단계는 압축 archive.finalize()를 완료하는 것입니다.디렉토리를 압축하려면 archive.directory()를 사용해야 합니다. API는 다음과 같습니다:
// 지정된 디렉터리를 압축 패키지로 압축하고 이름을 new-subdir로 바꾸면 subdir 디렉터리의 모든 파일은 여전히 압축 패키지의 루트 디렉터리가 아닌 new-subdir 디렉터리에 있습니다. archive.directory( 'subdir /', 'new-subdir');// 지정된 디렉터리의 모든 파일을 압축 패키지로 압축하여 압축하며, 이러한 파일은 하위 디렉터리가 아닌 압축 패키지의 루트 디렉터리에 있습니다. archive.directory(' 하위 디렉터리/', 거짓);전체 예는 다음과 같습니다.
// 첫 번째 단계, 필요한 모듈 가져오기 const fs = require('fs'); const archiver = require('archiver'); // 두 번째 단계, 데이터를 쓰기 위한 쓰기 가능한 스트림 생성 const output = 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 비디오 튜토리얼"
이상은 nodejs에서 archiver를 사용하는 방법에 대한 자세한 내용입니다. 자세한 내용은 이 사이트의 다른 관련 기사를 참고하세요!