Skip to content

honeo/zip-unzip-promise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zip-unzip-promise

なにこれ

ZIP圧縮・展開など。

使い方

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

API

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

options

key type default description
encode string "utf8" 書庫内のパスに使われている文字コード。"auto"で自動検出。 文字コード名
filter function 出力するコンテンツ毎にobjectを引数に実行され、falseが返ればskipする。
overwrite boolean false 上書きを許可するか。

.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が必須化。

About

かんたんZIP圧縮展開モジュール

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published