Typescript でファイルやフォルダを圧縮する方法

typescript で ファイルやフォルダを tar, gzip, tgz, zip 形式に圧縮する方法を紹介します。 なお、gzip形式でのフォルダ圧縮はできません。

1. Compressing モジュールのインストール

compressing というモジュールを使用します。

https://www.npmjs.com/package/compressing

npm install compressing

でインストールできます。

2. 圧縮を行う _compress クラス

すこし長いですが、各関数を1つのクラスにまとめています。

    // comp.ts
    import * as compressing from "compressing";
    export interface ICompress {
        file2zip(filepath: string, destpath: string): any;
        file2gzip(filepath: string, destpath: string): any;
        file2tar(filepath: string, destpath: string): any;
        file2tgz(filepath: string, destpath: string): any;
        dir2zip(inputdir: string, destpath: string): any;
        dir2tar(inputdir: string, destpath: string): any;
        dir2tgz(inputdir: string, destpath: string): any;
    }
    export default class _compress implements ICompress{
        file2zip(filepath: string, destpath: string) {
            compressing.zip.compressFile(filepath, destpath)
            .then( () => {
                return 0
            })
            .catch( (e) => {
                return e
            })
        }
        file2gzip(filepath: string, destpath: string) {
            compressing.gzip.compressFile(filepath, destpath)
            .then( () => {
                return 0
            })
            .catch( (e) => {
                return e
            })
        };
        file2tar(filepath: string, destpath: string) {
            compressing.tar.compressFile(filepath, destpath)
            .then( () => {
                return 0
            })
            .catch( (e) => {
                return e
            })
        };
        file2tgz(filepath: string, destpath: string) {
            compressing.tgz.compressFile(filepath, destpath)
            .then( () => {
                return 0
            })
            .catch( (e) => {
                return e
            })
        };
        dir2zip(inputdir: string, destpath: string) {
            compressing.zip.compressDir(inputdir, destpath)
            .then( () => {
                return 0
            })
            .catch( (e) => {
                return e
            })
        }
        dir2tar(inputdir: string, destpath: string) {
            compressing.tar.compressDir(inputdir, destpath)
            .then( () => {
                return 0
            })
            .catch( (e) => {
                return e
            })
        }
        dir2tgz(inputdir: string, destpath: string) {
            compressing.tgz.compressDir(inputdir, destpath)
            .then( () => {
                return 0
            })
            .catch( (e) => {
                return e
            })
        }
    }

3. 関数の説明

1. file2zip 関数

  • 処理内容:ファイルをzip形式に圧縮します。
  • 引数: filepath 圧縮するファイルパス, destpath zipファイル出力先ファイルパス
  • 返り値: 正常終了の場合は 0、異常終了の場合はエラー内容を返します。

2. file2gzip 関数

  • 処理内容:ファイルをgzip形式に圧縮します。
  • 引数: filepath 圧縮するファイルパス, destpath gzipファイル出力先ファイルパス
  • 返り値: 正常終了の場合は 0、異常終了の場合はエラー内容を返します。

3. file2tar 関数

  • 処理内容:ファイルをtar形式に圧縮します。
  • 引数: filepath 圧縮するファイルパス, destpath tarファイル出力先ファイルパス
  • 返り値: 正常終了の場合は 0、異常終了の場合はエラー内容を返します。

4. file2tgz 関数

  • 処理内容:ファイルをtgz形式に圧縮します。
  • 引数: filepath 圧縮するファイルパス, destpath tgzファイル出力先ファイルパス
  • 返り値: 正常終了の場合は 0、異常終了の場合はエラー内容を返します。

5. dir2zip 関数

  • 処理内容:ディレクトリをzip形式に圧縮します。
  • 引数: inputdir 圧縮するディレクトリ, destpath zipファイル出力先ファイルパス
  • 返り値: 正常終了の場合は 0、異常終了の場合はエラー内容を返します。

6. dir2tar 関数

  • 処理内容:ディレクトリをtar形式に圧縮します。
  • 引数: inputdir 圧縮するディレクトリ, destpath tarファイル出力先ファイルパス
  • 返り値: 正常終了の場合は 0、異常終了の場合はエラー内容を返します。

7. dir2tgz 関数

  • 処理内容:ディレクトリをtgz形式に圧縮します。
  • 引数: inputdir 圧縮するディレクトリ, destpath tgzファイル出力先ファイルパス
  • 返り値: 正常終了の場合は 0、異常終了の場合はエラー内容を返します。

4. 使い方

    import _compress from "./comp";
    // ---
    const compress = new _compress;
    const inputFilePath:string = "./sample.txt"
    const zipFilePath:string = "./sample.zip"
    const gzipFilePath:string = "./sample.gzip"
    const tarFilePath:string = "./sample.tar"
    const tgzFilePath:string = "./sample.tgz"
    const inputDir:string = "./sample"
    const zipFilePath2:string = "./sampledir.zip"
    const tarFilePath2:string = "./sampledir.tar"
    const tgzFilePath2:string = "./sampledir.tgz"
    // ---
    compress.file2zip(inputFilePath, zipFilePath);
    compress.file2gzip(inputFilePath, gzipFilePath);
    compress.file2tar(inputFilePath, tarFilePath);
    compress.file2tgz(inputFilePath, tgzFilePath);
    compress.dir2zip(inputDir, zipFilePath2);
    compress.dir2tar(inputDir, tarFilePath2);
    compress.dir2tgz(inputDir, tgzFilePath2);

クラスをimoprt して、new でインスタンスを生成している感じです。 あとは、関数を呼び出します。

5. ダウンロード

comp.ts はこちらからダウンロード可能です。

comp.ts

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

実践TypeScript【電子書籍】[ 吉井健文 ]
価格:3726円 (2019/7/23時点)

[

楽天で購入

](https://hb.afl.rakuten.co.jp/hgc/18648e8b.7d833591.18648e8c.ed1bab3c/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Frakutenkobo-ebooks%2F5456816fd8833397a6aa8b80647873ad%2F%3Fscid%3Daf_pc_bbtn&m=http%3A%2F%2Fm.rakuten.co.jp%2Frakutenkobo-ebooks%2Fi%2F18341447%2F%3Fscid%3Daf_pc_bbtn&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjEsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxfQ==)

コメント

タイトルとURLをコピーしました