node-tar v7で破壊的な変更が加えられた件
node-tar 7では、従来のコードが動作しなくなる破壊的な変更が含まれています。この記事では、どのような変更が加えられたのか、既存のコードをどのように変更すればよいのかについて解説します。
目次
node-tar 7の変更点
node-tarは、tarパッケージとしてnpmで提供されている、tarアーカイブを操作するためのライブラリです。
npm install tarnode-tar 7はTypeScriptベースになり、ES ModulesとCommonJSのデュアルパッケージになりました。その関係で、従来のコードが動作しなくなる破壊的な変更が含まれています。
コードの修正方法
ES Modulesの場合
ES Modulesの場合、従来は次のようなコードでnode-tarを利用できました。
// ES Modulesimport tar from "tar";
tar.x({ file: "archive.tar.gz"});しかし、node-tar 7からは、上記のコードは動作しません。従来のコードを使用すると、TypeErrorが発生します。
await tar.x({ ^TypeError: Cannot read properties of undefined (reading 'x')従来のコードは次のように修正する必要があります。
import tar from "tar";import * as tar from "tar";
tar.x({ file: "archive.tar.gz"});または、次のように書くこともできます。
import { x as extract } from "tar";
extract({ file: "archive.tar.gz"});Tree Shakingによる最適化の恩恵を受けたい場合は、次のように書くと、最低限の関数のみをインポートできます。
import { extract } from "tar/x";
extract({ file: "archive.tar.gz"});CommonJSの場合
CommonJSの場合は、従来と同じコードが動作します。
// CommonJSconst tar = require("tar");
tar.x({ file: "archive.tar.gz"});TypeScriptの場合の注意点
node-tar 7は、従来のVanilla JSからTypeScriptベースに変わりました。従来はDefinitely Typedから型定義(@types/tar)をインストールする必要がありましたが、node-tar 7からは型定義が同梱されているため、別途インストールする必要がなくなりました。
記事執筆時点では、Definitely Typedの型定義がnode-tar 7に対応していないため、コード補完が正しく動作しない可能性があります。不要になった型定義をアンインストールし、node-tarのビルトインの型定義を使用することをオススメします。
npm uninstall @types/tar参考
記事をシェア
フォローして最新情報を入手
Googleの優先ソースに追加すると、このサイトの記事をGoogleで見つけやすくなります。また、ぜひXやRSSフィードもフォローしてください。
次の記事
-1.png&w=1080&q=75)
生まれた時から、母国語よりも先にJavaScriptを使っていました。ネットの海のどこにもいなくてどこにでもいます。
Webフロントエンドプログラマーとして、TypeScriptを用いたWebアプリやブラウザー拡張機能を制作。Xのシャドウバン検知ツール「Shadowban Scanner」やリンクカード復活ツール「Restore Link Card」を公開し、国内外のメディアで紹介されました。iGEM 2023ではJapan-UnitedチームのWikiを制作してGrand Prizeの獲得に貢献。ブログではXやSNSの最新ニュース、不具合の検証と対処法、フロントエンド開発の知見を発信しています。



![npmのパッケージの設定画面のスクリーンショット。[Trusted Publisher]セクションの[Select your publisher]に[GitHub Actions]と[GitLab CI/CD]の2つのボタンが表示されている](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fnpm-trusted-publishing-settings.png&w=3840&q=75)



![[何を報告していますか?]というタイトルのダイアログで[スパム]にチェックが入っているスクリーンショット](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fx-report-post-spam-selected.png&w=1920&q=75)

![Xの設定の[アクセシビリティ、表示、言語]>[表示]>[フォントサイズ]のスクリーンショット](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fx-android-font-size-settings.png&w=3840&q=75)
![Xの設定画面のスクリーンショット。[アクセシビリティ、表示、言語]>[データ利用の設定]の中のようすが示されている](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fx-data-saver-high-resolusion-image-settings.png&w=3840&q=75)