はじめに
「ちょっとTypeScriptのスクリプトを試したいだけなのに、tsconfig.jsonを書いて、ts-nodeを入れて、それでも型エラーで止まる」——そんな経験はありませんか。TypeScriptをNode.jsで実行する方法は昔から複数ありますが、どれも一手間かかるのが悩みどころでした。
その面倒さを一気に解消してくれるのがtsxです。名前の通り「TypeScript Execute」の略で、コマンド一発でTypeScriptファイルを実行できます。この記事では、tsxの特徴からインストール、基本的な使い方、実践的な活用方法までを解説します。
tsxとは
tsxは、esbuildをベースにした「Node.jsでTypeScriptを実行するもっとも簡単な方法」を掲げるCLIツールです。型チェックを行わずにトランスパイルだけを高速に行うことで、起動の速さと設定不要の手軽さを実現しています。GitHub上で12,000以上のスターを獲得しており、TypeScriptスクリプトの実行手段として広く使われています。
主な特徴
- 設定ファイルが不要 -
tsconfig.jsonがなくてもそのまま実行でき、ESMとCJSの両方に対応しています - esbuildによる高速な変換 - トランスパイルにesbuildを使っているため、起動から実行までが非常に速いです
- ウォッチモード搭載 - ファイルの変更を検知して自動的に再実行する機能が標準で組み込まれています
- JSX・パスエイリアスにも対応 - Reactなどのフロントエンド寄りのコードや
tsconfig.jsonのpaths設定もそのまま解釈できます
インストール
インストールせずにnpx経由でそのまま試すこともできます。
npx tsx ./script.ts
プロジェクトの開発依存として導入する場合は、以下のいずれかを実行してください。
# npm
npm install -D tsx
# pnpm
pnpm add -D tsx
# yarn
yarn add -D tsx
CLIとしてグローバルに使いたい場合は次のようにインストールします。
npm install -g tsx
基本的な使い方
もっとも基本的な使い方は、tsxコマンドの後ろに実行したいTypeScriptファイルを指定するだけです。
// script.ts
const greet = (name: string): string => `Hello, ${name}!`;
console.log(greet("tsx"));
npx tsx ./script.ts
# => Hello, tsx!
tsconfig.jsonもビルド設定も不要で、そのまま実行できるのが特徴です。package.jsonのスクリプトに登録しておけば、日常的なコマンドとしても使えます。
{
"scripts": {
"start": "tsx ./src/index.ts"
}
}
ウォッチモード
ファイルの変更を検知して自動的に再実行してくれるwatchモードも用意されています。開発中のサーバーやバッチ処理の確認に便利です。
tsx watch ./src/index.ts
監視対象を追加・除外したい場合は、次のようにオプションを指定します。
# 監視対象を追加
tsx watch --include ./config/*.json ./src/index.ts
# 監視対象から除外(グロブパターンにも対応)
tsx watch --exclude "./data/**/*" ./src/index.ts
なお、node_modulesやdist、隠しディレクトリなどはデフォルトで監視対象外になっているため、余計な設定をしなくても快適に動作します。
実践的なユースケース
実務でよく使われるのが、簡易的なバッチスクリプトやシードスクリプトをTypeScriptのまま実行するケースです。たとえば、開発用データベースへの初期データ投入スクリプトを考えてみます。
// scripts/seed.ts
type User = {
id: number;
name: string;
role: "admin" | "member";
};
const users: User[] = [
{ id: 1, name: "Taro", role: "admin" },
{ id: 2, name: "Hanako", role: "member" },
];
const seed = async (data: User[]): Promise<void> => {
for (const user of data) {
console.log(`Seeding user: ${user.name} (${user.role})`);
// 実際にはここでDBクライアントを呼び出す
}
};
seed(users).catch((error) => {
console.error("Seed failed:", error);
process.exitCode = 1;
});
tsx ./scripts/seed.ts
ビルド工程を挟まずにこのまま実行できるため、CIのシードステップや開発環境のセットアップスクリプトとして重宝します。また、ウォッチモードと組み合わせれば、ちょっとしたAPIサーバーの動作確認をしながらコードを書き進めることもできます。
tsx watch ./src/server.ts
ts-nodeから乗り換える場合も、既存のTypeScriptファイルをそのままtsxコマンドに置き換えるだけで動くケースがほとんどなので、移行のハードルも低いです。
まとめ
tsxは、TypeScriptをNode.js上で実行する際の面倒な設定をほぼゼロにしてくれるツールです。esbuildによる高速なトランスパイルと、標準搭載のウォッチモードによって、スクリプトの実行からサーバーの開発まで幅広く使えます。
「TypeScriptをとりあえず動かしたい」という場面に出会ったら、まずはnpx tsxを試してみてください。設定ファイルに悩む時間が、そのままコードを書く時間に変わるはずです。
