> 웹 프론트엔드 > 프런트엔드 Q&A > nodejs에서 아카이버를 사용하는 방법

nodejs에서 아카이버를 사용하는 방법

WBOY
풀어 주다: 2022-06-29 16:00:54
원래의
2500명이 탐색했습니다.

nodejs에서 archiver는 zip 형식 또는 tar 형식의 압축 패키지로 압축하고 패키징하는 데 사용됩니다. 패키징 형식은 zip 및 tar를 사용할 수 있습니다. archiver”문을 사용하기 전에 모듈을 설치하십시오.

nodejs에서 아카이버를 사용하는 방법

이 문서의 운영 환경: Windows 10 시스템, nodejs 버전 12.19.0, Dell G3 컴퓨터.

nodejs에서 아카이버를 사용하는 방법

때때로 일부 파일을 zip 형식이나 tar 형식의 압축 패키지로 압축하고 패키징해야 할 수도 있고, 디렉터리도 패키징해야 할 수도 있습니다. Node.js에서는 타사 패키지 아카이버를 사용하여 작업을 수행할 수 있습니다.

archiver는 nodejs에서 크로스 플랫폼 패키징 기능을 실현할 수 있는 모듈입니다. zip 및 tar 패키지를 만들 수 있으며 비교적 사용하기 쉬운 타사 모듈입니다.

사용하기 전에 아카이브 모듈을 설치하세요.

코드는 다음과 같습니다.

npm install archiver
로그인 후 복사

소개:

// 由于需要读取文件所以需要fs模块,也必须导入
const fs = require('fs');
const archiver = require('archiver');
로그인 후 복사

Usage

기본 사용법은 다음과 같습니다.

// 第一步,导入必要的模块
const fs = require('fs');
const archiver = require('archiver');

// 第二步,创建可写流来写入数据
const output = fs.createWriteStream(__dirname + "/hello.zip");// 将压缩包保存到当前项目的目录下,并且压缩包名为test.zip
const archive = archiver('zip', {zlib: {level: 9}});// 设置压缩等级

// 第三步,建立管道连接
archive.pipe(output);

// 第四步,压缩指定文件
var stream = fs.createReadStream(__dirname + "/hello.txt");// 读取当前目录下的hello.txt
archive.append(stream, {name: 'hello.txt'});

// 第五步,完成压缩
archive.finalize();
로그인 후 복사

코드가 성공적으로 실행되면 hello.zip이라는 압축 패키지가 디렉터리에 생성됩니다. 프로젝트가 있는 곳은 hello.txt 압축 파일입니다.
nodejs에서 아카이버를 사용하는 방법

단일 파일 압축

압축된 파일은 archive.append(), archive.file()을 사용하여 조작할 수 있습니다. 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' });

// 添加一个文件到压缩包,通过Buffer数据的方式附加文件
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.zip
const 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("这是Buffer格式的数据"), {name: 'buffer.txt'});// Buffer对象
archive.append("直接传入字符串", {name: 'string.txt'});// 字符串

// 第五步,完成压缩
archive.finalize();
로그인 후 복사

nodejs에서 아카이버를 사용하는 방법
注意:archive.append()第二个参数{name: 'hello.txt'}是对压缩包中对应的文件进行重命名。

压缩多个文件

如果要压缩多个文件,直接调用archive.append()方法附加文件即可,这些附加的文件都会被添加到压缩包中。如例:

// 第一步,导入必要的模块
const fs = require('fs');
const archiver = require('archiver');

// 第二步,创建可写流来写入数据
const output = fs.createWriteStream(__dirname + "/hello.zip");// 将压缩包保存到当前项目的目录下,并且压缩包名为test.zip
const 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();
로그인 후 복사

nodejs에서 아카이버를 사용하는 방법

压缩目录

如果要压缩目录,则需要使用archive.directory()

단일 파일을 압축하는 API는 다음과 같습니다.

// 将指定目录打包压缩到压缩包中,并且重命名为new-subdir,并且subdir目录下的所有文件仍然在new-subdir目录下,而不是在压缩包的根目录下
archive.directory('subdir/', 'new-subdir');

// 将指定目录下的所有文件打包压缩到压缩包中,而这些文件在压缩包的根目录,而非子目录中
archive.directory('subdir/', false);
로그인 후 복사

전체 예제는 다음과 같습니다.

// 第一步,导入必要的模块
const fs = require('fs');
const archiver = require('archiver');

// 第二步,创建可写流来写入数据
const output = fs.createWriteStream(__dirname + "/hello.zip");// 将压缩包保存到当前项目的目录下,并且压缩包名为test.zip
const archive = archiver('zip', {zlib: {level: 9}});// 设置压缩等级

// 第三步,建立管道连接
archive.pipe(output);

// 第四步,压缩目录到压缩包中
archive.directory('public/', 'new-public');
archive.directory('demo/', false);

// 第五步,完成压缩
archive.finalize();
로그인 후 복사
nodejs에서 아카이버를 사용하는 방법여기에 이미지 설명 삽입 참고: archive.append()두 번째 매개변수 {name: 'hello.txt'}는 압축용입니다. 패키지에서 해당 파일의 이름을 바꿉니다.

여러 파일 압축

여러 파일을 압축하려면 archive.append() 메서드를 호출하여 파일을 추가하면 이러한 추가 파일이 압축 패키지에 추가됩니다. 예: 🎜rrreee🎜여기에 이미지 설명 삽입🎜🎜 압축 thedirectory🎜🎜디렉토리를 압축하려면 archive.directory()를 사용하여 압축을 완료해야 합니다. API는 다음과 같습니다. 🎜rrreee🎜전체 예는 다음과 같습니다. 🎜rrreee🎜🎜🎜🎜권장 학습: "🎜nodejs 비디오 튜토리얼🎜"🎜

위 내용은 nodejs에서 아카이버를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿