どんなプロジェクトにもお勧めできる、汎用的な JavaScript/TypeScript の OSS をとにかくまとめる

Node.js
最も普及している、ブラウザに依存しない JavaScript 実行環境(ランタイム)です。
Deno や Bun など新興の JavaScript 実行環境も盛り上がっているものの、蓄積されたノウハウ、拡張性、稼働実績に裏付けられた安定性には圧倒的な差があると思います。
今後 ESModule が普及したりサーバサイド JavaScript の標準化が進んだりすれば状況は変わるかもしれませんが、 Node.js もアップデートされ続けますし、状況が変化するには十年以上かかるでしょう。

pnpm
とにかく早い npm パッケージマネージャー(JavaScript/TypeScript のライブラリを管理するもの)です。
他に npm パッケージマネージャの選択肢は Node.js に同梱されている npm と少し前まで主流だった Yarn がありますが、 npm はあまりに遅いですし、 Yarn は v2 (berry) 以降独自路線に進みすぎていてトラブルシューティングに困ることが多いです。
なお、Bun や Deno の同梱パッケージマネージャは元々高速なので、これらを使用する場合はあえて pnpm にする理由はありません。

TypeScript
Microsoft がメンテナンスする、 JavaScript に静的な型の概念を導入した言語です。
ソースコードがある程度の規模になると、型のない JavaScript ではメンテナンス性に限界が訪れます。
型レベルのプログラミングを極めれば、他のプログラミング言語ではなかなか味わえない面白い開発体験ができます。

tsx
Node.js で TypeScript を直接実行するためのツールです。 React で使う JSX とは関係ありません。
少し前までは ts-node が使われていましたが、 ts-node は型をチェックするので tsx より遅いです。
esbuild をベースにしているため、 CommonJS や TypeScript の一部の実験的機能は使用できないことに注意してください。
なお、 Deno や Bun は追加のツールなしで TypeScript を直接実行できます。

TSConfig bases
TypeScript の設定ファイル tsconfig.json
のプリセット群です。 node22
, react-native
などのランタイムごとの設定や、 strictest
という静的チェック用の設定が用意されています。
全部手動で設定するのは大変なので、ここから選んだものを extend してカスタムするとよいです。

ESLint
コードの品質を保つルールを設定できるリンターです。コードの品質はメンテナンスのコストに大きく影響するので、導入をお勧めします。
一昔前までは TypeScript 専用の TSLint という選択肢もありましたが、こちらは現在メンテナンスされておらず非推奨になっています。
新興の Biome と比べると、設定がやや面倒である点と実行速度が遅い点が気になります。

eslint-config-love
TypeScript 用の ESLint のプラグイン群と設定の標準的なプリセットです。以前は eslint-config-standard-with-typescript という名前でした。
2024-10-12 現在、 ESLint 9 への対応が遅れていますが、活動を見る限りもう間もなく対応しそうです。
(追記: ちょうどこのコメントをした日に v85.0.0 がリリースされ、 ESLint 9 に対応しました。)

Prettier
JavaScript/TypeScript が主な対象のフォーマッターです。インデント、一行の長さ、セミコロンや末尾カンマなどのフォーマットを統一できます。
ESLint と併用する場合は、ESLint に eslint-config-prettier を導入してルールが競合しないようにします。
ESLint のかわりに Biome を使用する場合は、Biome がフォーマッター機能を持っているため、Prettier の導入は不要です。

DefinitelyTyped
型情報を持たないライブラリ向けに TypeScript の型(d.ts
宣言ファイル)パッケージを提供するプロジェクトです。
例えば @types/node
をインストールすると、 console
や fs
などの Node.js が提供する機能の型が分かるようになります。

Remeda
unique()
や pick()
などの関数を提供する JavaScript/TypeScript のユーティリティライブラリです。
Lodash や Ramda といった古参のユーティリティライブラリと似た使用感ですが、軽量で使いやすく、厳密な型定義を提供しています。

TypeBox
シンプルで高速、 TypeScript フレンドリーな JSON Schema ビルダー & バリデータです。
まだ 0.x 系なので破壊的変更の頻度が高いのが少し気になりますが、古参の Zod より機能も豊富で使いやすいと思います。

Vitest
Vite という JavaScript バンドラーを基に作られたテストフレームワークです。
古参の Jest と比べて高速で、 TypeScript のテストを直接実行でき、ESM にも対応しています。 Jest と互換性のある API を持っているため、 Jest からの移行も容易です。
esbuild をベースにしているため、 CommonJS モジュールや TypeScript の一部の実験的機能は使用できないことに注意してください。
Deno を使う場合は最初から充実したテストランナーを備えているので、Vitest を選ぶ必要はないかもしれません。