LoginSignup
0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

[Node.js] ZIP ファイル解凍方法をまとめてみた

Last updated at Posted at 2024-06-29

はじめに

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 の記事が多いので、一番愛用されているのでしょうか、、と個人的にも思いました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0