2.1.2 • Published 1 year ago

zip-unzip-promise v2.1.2

Weekly downloads
61
License
MIT
Repository
github
Last release
1 year ago

zip-unzip-promise

なにこれ

ZIP圧縮・展開など。

使い方

$ npm i zip-unzip-promise
const {zip, unzip, list} = require('zip-unzip-promise');

API

  • 出力先について - ファイルが既にあればスキップする。 - ディレクトリがなければ作成する。 - node-sanitize-filenameで正規化する。

options

keytypedefaultdescription
encodestring"utf8"書庫内のパスに使われている文字コード。"auto"で自動検出。 文字コード名
filterfunction出力するコンテンツ毎にobjectを引数に実行され、falseが返ればskipする。
overwritebooleanfalse上書きを許可するか。

.zip(input, outputFilePath , options)

引数1パスのファイル・ディレクトリまたはそれらの配列を元に圧縮する。 作成した圧縮ファイルの絶対パスを引数に解決するpromiseを返す。

// file => archive
const zipPath = await zip('hoge.txt', 'hoge.zip');

// dir => dir/archive
const zipPath = await zip('hoge', 'output/hoge.zip');

// dir & file => archive
const zipPath = await zip([
	'./hoge', './fuga.ext'
], './piyo.zip');



/*
	options
*/

// overwrite: all
const zipPath = await zip('foo.ext', 'bar.zip', {
	overwrite: true
});

// overwrite: if old
const zipPath = await zip('foo.ext', 'bar.zip', {
	overwrite: true,
	filter({path, type}){
		const stats = fs.statSync(path);
		return stats.birthtime.getFullYear() < new Date().getFullYear();
	}
});

.unzip(inputFilePath, outputDirPath , options)

引数1パスの圧縮ファイルを展開する。 展開先ディレクトリの絶対パスを引数に解決するpromiseを返す。

// archive => contents
const dirPath = await unzip('./hoge.zip', './');

// archive => dir/contents
const dirPath = await unzip('./hoge.zip', './output');



/*
	options
*/

// overwrite
const dirPath = await unzip('foo.zip', 'bar', {
	overwrite: true
});

// output: *.txt file only
const dirPath = await unzip('foo.zip', 'bar', {
	filter({path, type}){
		return type==='File' && /\.txt$/.test(path);
	}
});

// for not UTF-8
const dirPath = await unzip('archive.zip', './', {
	encode: 'auto' // or "sjis", "ascii"...
});

.list(inputFilePath, , options)

引数1パスの圧縮ファイル内のコンテンツ一覧を配列で取得する。 取得した配列を引数に解決するpromiseを返す。

// [...pathString]
const arr = await list('hoge.zip');

// options
const arr = await list('hoge.zip', {encode: 'sjis'});

Breaking Changes

v1 => v2

  • .zip() - 引数2が必須化。
  • .unzip() - 引数2が必須化。