パッケージ
現代のTypeScript/JavaScript開発では、すべてをゼロから書くことはほとんどありません。日付の操作、HTTPリクエスト、バリデーションなど、よくある処理には先人が作ったパッケージが公開されています。パッケージを活用することで、車輪の再発明を避け、より重要なアプリケーション固有のロジックに集中できます。
たとえば、次のようなパッケージは広く使われています。
- zod ─ データのバリデーションを型安全に行うパッケージ
- Express ─ Webサーバーを構築するためのパッケージ
- lodash ─ 配列やオブジェクトの操作を便利にするユーティリティパッケージ
- date-fns ─ 日付の操作を扱うパッケージ
これらはすべて、他の開発者が作成し、公開しているパッケージです。npm installコマンドひとつでプロジェクトに導入できます。
なぜパッケージについて学ぶ必要があるのか
実務のTypeScript開発では、パッケージを使わないプロジェクトはほぼ存在しません。パッケージの基本を理解していないと、次のような場面で困ることになります。
- プロジェクトのセットアップ時に、何をインストールすればいいかわからない
- エラーが出たときに、それがパッケージの問題なのか自分のコードの問題なのか判断できない
- チームメンバーが使っているツールやライブラリの導入手順が理解できない
この章では、パッケージとは何か、どのようにインストールし、どのように使うのかをひととおり学びます。
この章の構成
この章は次のページで構成されています。上から順に読み進めることをお勧めします。
- パッケージマネージャー ─ npm, pnpm, Bun, Yarnの概要
- パッケージのインストール ─ インストール方法、バージョン指定、レジストリ
- パッケージの使い方 ─ importの方法、型定義の扱い
- package.json ─ 依存関係の管理とスクリプト
- ロックファイル ─ 再現可能なインストールの仕組み
- node_modules ─ パッケージの保管場所
- パッケージのセキュリティ ─ サプライチェーン攻撃と対策
- パッケージを探す ─ パッケージの選び方と品質の見極め
パッケージとモジュールの違い
パッケージと似た用語にモジュールがあります。この2つは異なる概念です。
モジュールは、1つのJavaScript/TypeScriptファイルを指します。exportやimportを使って、ファイル間で値をやり取りする仕組みです。
パッケージは、package.jsonというメタデータファイルと、複数のファイル群をまとめた配布単位です。パッケージの中には、1つ以上のモジュールが含まれています。
たとえば、zodというパッケージをインストールすると、node_modules/zod/ディレクトリの中にpackage.jsonと多数のJavaScriptファイル(モジュール)が配置されます。開発者はそのパッケージが提供するモジュールをimportして使います。
モジュールの詳細については、次のページを参照してください。
パッケージとライブラリの違い
もうひとつ紛らわしい用語にライブラリがあります。
ライブラリは、特定の機能を提供するコードの集まりを指す概念的な用語です。「日付操作のライブラリ」「HTTPクライアントのライブラリ」のように、機能の種類を表すときに使われます。
パッケージは、そのライブラリを配布可能な形にまとめたものです。package.jsonでバージョンや依存関係を管理し、パッケージレジストリ(npmjs.comなど)を通じて配布します。
実務では「パッケージ」と「ライブラリ」はほぼ同義で使われることも多いです。厳密に区別する必要はありませんが、「ライブラリは概念、パッケージは配布形態」と覚えておくと整理しやすくなります。
学びをシェアする
・パッケージはpackage.jsonとファイル群を持つ配布単位
・モジュールは1つのJS/TSファイル、パッケージはモジュールの集合体
・ライブラリは機能の概念、パッケージはその配布形態
・現代のTypeScript開発ではパッケージの利用がほぼ必須
『サバイバルTypeScript』より