node-tar v7で破壊的な変更が加えられた件
node-tar 7では、従来のコードが動作しなくなる破壊的な変更が含まれています。この記事では、どのような変更が加えられたのか、既存のコードをどのように変更すればよいのかについて解説します。
node-tar 7の変更点
node-tarは、tar
パッケージとしてnpmで提供されている、tarアーカイブを操作するためのライブラリです。
node-tar 7はTypeScriptベースになり、ES ModulesとCommonJSのデュアルパッケージになりました。その関係で、従来のコードが動作しなくなる破壊的な変更が含まれています。
コードの修正方法
ES Modulesの場合
ES Modulesの場合、従来は次のようなコードでnode-tarを利用できました。
しかし、node-tar 7からは、上記のコードは動作しません。従来のコードを使用すると、TypeError
が発生します。
従来のコードは次のように修正する必要があります。
または、次のように書くこともできます。
Tree Shakingによる最適化の恩恵を受けたい場合は、次のように書くと、最低限の関数のみをインポートできます。
CommonJSの場合
CommonJSの場合は、従来と同じコードが動作します。
TypeScriptの場合の注意点
node-tar 7は、従来のVanilla JSからTypeScriptベースに変わりました。従来はDefinitely Typedから型定義(@types/tar
)をインストールする必要がありましたが、node-tar 7からは型定義が同梱されているため、別途インストールする必要がなくなりました。
記事執筆時点では、Definitely Typedの型定義がnode-tar 7に対応していないため、コード補完が正しく動作しない可能性があります。不要になった型定義をアンインストールし、node-tarのビルトインの型定義を使用することをオススメします。