nodejs では、アーカイバーは、いくつかのファイルを zip 形式または tar 形式の圧縮パッケージに圧縮してパッケージ化するために使用されます。アーカイバーは、プラットフォーム間でパッケージ化機能を実装できるモジュールです。パッケージ化形式は zip と tar で、これらを使用できます。 「npm install archiver」ステートメントは、使用前にモジュールをインストールします。
この記事の動作環境: Windows 10 システム、nodejs バージョン 12.19.0、Dell G3 コンピューター。
場合によっては、いくつかのファイルを zip 形式または tar 形式の圧縮パッケージに圧縮してパッケージ化する必要がある場合や、ディレクトリをパッケージ化する必要がある場合もあります。 Node.js では、サードパーティのパッケージ アーカイバーを使用して操作を実行できます。
archiver は、nodejs でクロスプラットフォームパッケージング機能を実現するモジュールで、zip および tar パッケージを作成でき、比較的使いやすいサードパーティ製モジュールです。
使用前にアーカイブ モジュールをインストールしてください。
コードは次のとおりです:
npm install archiver
概要:
// 由于需要读取文件所以需要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.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();
Afterコードが正常に実行されると、プロジェクトが存在するディレクトリに 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' }); // 添加一个文件到压缩包,通过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();
注: archive .append()
2 番目のパラメータ {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();
ディレクトリを圧縮する場合は、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 ビデオ チュートリアル 」
以上がNodejsでアーカイバーを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。