tar
archive/tarモジュールは、JSHでTARアーカイブを作成・展開します。
シンプルなメモリ上のヘルパー、ストリーム形式のAPI、ファイルベースのTarクラスを提供します。
処理方法に合わせて、以下のAPIを選択します。
- アーカイブがメモリ上にある場合は、
tarSync()とuntarSync()を使用します。 - ファイルを読み込んで
.tarファイルに保存する場合や、ディスクに展開する場合は、Tarクラスを使用します。 - イベント駆動で処理する場合は、
createTar()とcreateUntar()を使用します。
インストール
const tar = require('archive/tar');tarSync()
TARアーカイブを同期的に作成します。
構文
tarSync(data)パラメーター
dataString | ArrayBuffer | Uint8Array | Number[] | Object[]
dataが単一の文字列またはバイトバッファーの場合、作成するエントリの既定の名前はdataです。
配列を渡す場合は、各要素を{ name, data }形式のエントリオブジェクトとして扱います。
戻り値
TARアーカイブのバイト列を含むArrayBufferを返します。
簡単なテストや、メモリ上でアーカイブを作成してから別の場所に保存する場合に便利です。
使用例
| |
| |
untarSync()
TARアーカイブのバイト列を同期的に展開し、エントリオブジェクトの配列を返します。
構文
untarSync(buffer)パラメーター
bufferArrayBuffer | Uint8Array | Number[]
戻り値
エントリオブジェクトの配列を返します。
各エントリには、name、data、mode、size、isDir、modified、typeflag、type、
linknameフィールドを含む場合があります。
使用例
| |
tar()
TAR作成機能の、コールバック形式の非同期ラッパーです。
構文
tar(data, callback)コールバックのシグネチャは(err, archive)です。
untar()
TAR展開機能の、コールバック形式の非同期ラッパーです。
構文
untar(buffer, callback)コールバックのシグネチャは(err, entries)です。
ストリームイベントを直接管理せずに、コールバック方式で処理する場合に適しています。
使用例
| |
createTar()
ストリーム形式のTAR writerを作成します。
返されるオブジェクトは、write()でエントリを受け取り、end()が呼び出されると、dataイベントでアーカイブのバイト列を出力します。
このAPIはイベント駆動ですが、Node.jsのファイルストリームのように中間結果を逐次出力せず、end()の時点で処理を完了します。
構文
createTar()createUntar()
ストリーム形式のTAR readerを作成します。
アーカイブのバイト列をwrite()で渡してからend()を呼び出すと、展開した項目ごとにentryイベントが発生します。
構文
createUntar()使用例
| |
Tar
Tarは、TARアーカイブの作成、保存、読み込み、展開を行うファイル指向のヘルパークラスです。
コンストラクター
new tar.Tar(filePath?)filePathを指定すると、そのファイルからアーカイブを読み込みます。
addFile()
ファイルシステムのファイルを読み込み、アーカイブエントリとして追加します。
addFile(filePath[, entryName])addBuffer()
文字列またはバイトバッファーを、アーカイブエントリとして追加します。
addBuffer(data, entryName[, options])addEntry()
エントリオブジェクトを直接追加します。
addEntry(entry)対応するTARエントリのフィールドは以下のとおりです。
nameString必須のエントリパスdataString | ArrayBuffer | Uint8Array | Number[]ファイルの内容modeNumberファイルモードmodifiedDate更新時刻typeString例:file、dir、symlink、linktypeflagNumber生のTARタイプフラグlinknameStringsymlinkまたはlinkのリンク先パスisDirBooleanディレクトリエントリかどうか
addFile()は、ディスク上にあるファイルをまとめる最も簡単な方法です。
addBuffer()は、メモリ上で生成した内容を直接追加する場合に適しています。
addEntry()は、ディレクトリエントリやリンクのメタデータなど、TAR固有のプロパティが必要な場合に使用します。
getEntries()
現在のアーカイブエントリの浅いコピーを返します。
getEntries()writeTo()
アーカイブをファイルに保存します。
writeTo(filePath)extractAllTo()
エントリをディレクトリに展開します。
extractAllTo(outputDir[, overwrite])
extractAllTo(outputDir, options)
extractAllTo(outputDir, overwrite, options)optionsは、以下の値に対応しています。
overwriteBooleantrueの場合、既存のファイルを上書きします。filterFunction | RegExp | String | String[]展開するエントリを選択します。
使用例
| |
使用例: ファイルをまとめて再展開する
| |
使用例: 条件付きの展開
| |
注意
- ディレクトリエントリは
isDir: trueで返され、名前の末尾に/が付きます。 filterには、コールバック、RegExp、文字列、エントリ名の配列を使用できます。extractAllTo()は、対象ファイルが存在し、overwriteがfalseの場合にエラーを発生させます。- TAR固有のリンクメタデータは、
type: 'symlink'またはtype: 'link'とlinknameの組み合わせで指定できます。