nodejs では、アーカイバーは、いくつかのファイルを zip 形式または tar 形式の圧縮パッケージに圧縮してパッケージ化するために使用されます。アーカイバーは、プラットフォーム間でパッケージ化機能を実装できるモジュールです。「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'); // 2 番目のステップでは、データを書き込むための書き込み可能なストリームを作成します const Output = fs.createWriteStream ( __dirname + "/hello.zip");// 圧縮パッケージを現在のプロジェクトのディレクトリに保存します。圧縮パッケージの名前は test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//圧縮レベルを設定します//3 番目のステップは、パイプライン接続を確立することです archive.pipe(output);//4 番目のステップは、指定されたファイルを圧縮することです var stream = fs.createReadStream(__dirname + "/hello. txt");// hello.txtarchive.append(stream, {name: 'hello.txt'});// 5 番目のステップは、圧縮 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' });//圧縮パッケージにファイルを追加しますpackage、バッファデータを通じてファイルを追加します constbuffer3 = Buffer.from('buff it!');archive.append(buffer3, { name: 'file3.txt' });// 圧縮パッケージ package にファイルを追加します。ファイルパスを直接渡します archive.file('file1.txt', { name: 'file4.txt' });完全な例は次のとおりです。
// 最初のステップでは、必要なモジュールをインポートします const fs = require('fs'); const archiver = require('archiver'); // 2 番目のステップでは、データを書き込むための書き込み可能なストリームを作成します const Output = fs.createWriteStream ( __dirname + "/hello.zip");// 圧縮パッケージを現在のプロジェクトのディレクトリに保存します。圧縮パッケージの名前は test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//圧縮レベルを設定します//3 番目のステップは、パイプライン接続を確立することです archive.pipe(output);//4 番目のステップは、指定されたファイルを圧縮することです 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/ / 5 番目のステップは、圧縮 archive.finalize(); を完了することです。注: archive.append() の 2 番目のパラメーター {name: 'hello.txt'} は、圧縮パッケージ内の対応するファイルの名前を変更します。
複数のファイルを圧縮する場合は、archive.append() メソッドを呼び出してファイルを追加するだけで、これらの追加ファイルが圧縮パッケージに追加されます。例えば:
// 最初のステップでは、必要なモジュールをインポートします const fs = require('fs'); const archiver = require('archiver'); // 2 番目のステップでは、データを書き込むための書き込み可能なストリームを作成します const Output = fs.createWriteStream ( __dirname + "/hello.zip");// 圧縮パッケージを現在のプロジェクトのディレクトリに保存します。圧縮パッケージの名前は test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//圧縮レベルを設定します//3 番目のステップは、パイプライン接続を確立することです archive.pipe(output);//4 番目のステップは、複数のファイルを圧縮パッケージに圧縮することです 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'});// 5 番目のステップは、圧縮を完了することです 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'); // 2 番目のステップでは、データを書き込むための書き込み可能なストリームを作成します const Output = fs.createWriteStream ( __dirname + "/hello.zip");// 圧縮パッケージを現在のプロジェクトのディレクトリに保存します。圧縮パッケージの名前は test.zipconst archive = archiver('zip', {zlib: {level: 9}} ) ;//圧縮レベルを設定します//3 番目のステップは、パイプライン接続を確立することです archive.pipe(output);//4 番目のステップは、ディレクトリを圧縮パッケージに圧縮することです archive.directory('public/', ' new-public'); archive.directory('demo/', false);// 5 番目のステップは、圧縮を完了することです。推奨される学習: 「nodejs ビデオ チュートリアル」
上記は、nodejs でアーカイバを使用する方法の詳細です。詳細については、このサイトの他の関連記事に注目してください。