はじめに
Node.js で ZIP ファイルを解凍する方法はまとめてみました!
解決手法
方法 1: adm-zip
ライブラリを使用する
特徴
- 直感的で使いやすい
- 同期処理
- 軽量
インストール
npm install adm-zip
使用例
const AdmZip = require('adm-zip');
const zip = new AdmZip('path/to/archive.zip');
zip.extractAllTo('output/path', true);
console.log('Extraction complete');
方法 2: unzipper
ライブラリを使用する
特徴
- ストリーム API を使用しているため、大きな ZIP ファイルの操作に適している
- 非同期処理
- ZIP ファイルの個々のエントリにアクセスできるため、特定のファイルだけを抽出することが可能
- エラー処理が容易
インストール
npm install unzipper
使用例
const fs = require('fs');
const unzipper = require('unzipper');
fs.createReadStream('path/to/archive.zip')
.pipe(unzipper.Extract({ path: 'output/path' }))
.promise()
.then(() => console.log('Extraction complete'), e => console.log('Error', e));
方法 3: extract-zip
ライブラリを使用する
特徴
- 非同期処理
- 解凍プロセス中のエラー処理がしやすい
インストール
npm install extract-zip
使用例
const extract = require('extract-zip');
async function main() {
try {
await extract('path/to/archive.zip', { dir: 'output/path' });
console.log('Extraction complete');
} catch (err) {
console.log('Error', err);
}
}
main();
まとめ
個人的には adm-zip
が一番使いやすかったです!直感的に読める感じがします!
unzipper は大規模な ZIP ファイルにも適していたり、個々のファイルへアクセスも可能ですが、個人的に実装が直感的じゃなくて見にくい印象です。
ネットでも調べると adm-zip
の記事が多いので、一番愛用されているのでしょうか、、と個人的にも思いました。