Skip to content

ツールとビルドプロセス

公開日:November 16, 2024更新日:November 28, 2024
JavaScriptTypeScriptCoding📄

TypeScriptを使用する際には、ビルドプロセスを適切に設定することで、効率的にプロジェクトを管理・運用することができます。このセクションでは、TypeScriptコンパイラのオプション(tsconfig.json)、トランスパイルとビルド、そしてWebpackやBabelとの連携について説明します。

TypeScriptコンパイラのオプション (tsconfig.json)

TypeScriptのプロジェクトでは、コンパイラの動作を設定するためにtsconfig.jsonファイルを使用します。このファイルには、どのファイルをコンパイルするか、どのようにコンパイルするかといったオプションが記述されています。

以下に、よく使われるオプションを紹介します。

json
{
  "compilerOptions": {
    "target": "ES6",          // コンパイル後のJavaScriptのバージョン
    "module": "commonjs",     // モジュールシステム(ESNext, CommonJSなど)
    "strict": true,            // 厳格な型チェックを有効にする
    "outDir": "./dist",       // 出力ディレクトリ
    "rootDir": "./src",       // ソースコードのルートディレクトリ
    "esModuleInterop": true,   // ESモジュールとCommonJSの互換性を持たせる
    "allowJs": true,           // JavaScriptファイルをコンパイル対象に含める
    "sourceMap": true          // デバッグ用にソースマップを生成する
  },
  "include": ["src/**/*"],      // コンパイル対象のファイルを指定
  "exclude": ["node_modules"]  // コンパイル対象から除外するファイルを指定
}
  • target: コンパイル後のJavaScriptのバージョンを指定します(例: ES5, ES6)。
  • module: モジュールの解決方法を指定します(例: commonjs, esnext)。
  • strict: 厳格な型チェックを有効にし、型安全性を高めます。
  • outDir: コンパイル後のファイルを出力するディレクトリを指定します。
  • rootDir: ソースコードのルートディレクトリを指定します。
  • esModuleInterop: ESモジュールとCommonJSのインポート互換性を持たせるために使用します。
  • allowJs: JavaScriptファイルもコンパイル対象に含めるかどうかを設定します。
  • sourceMap: デバッグのためにソースマップを生成し、コンパイルされたJavaScriptと元のTypeScriptを対応させます。

tsconfig.jsonを適切に設定することで、プロジェクト全体のビルドプロセスが効率的に管理できるようになります。

トランスパイルとビルド

TypeScriptのコードは、最終的にJavaScriptに変換される必要があります。このプロセスを「トランスパイル」と呼びます。TypeScriptコンパイラ(tsc)を使用して、.tsファイルをJavaScriptファイルに変換します。

トランスパイルの実行

次のコマンドを使って、プロジェクト全体をトランスパイルします。

bash
npx tsc

これにより、tsconfig.jsonで設定されたオプションに従って、TypeScriptファイルがトランスパイルされ、指定されたディレクトリにJavaScriptファイルが生成されます。

TypeScriptのトランスパイルは通常、watchモードで実行することもできます。watchモードでは、ソースコードに変更があるたびに自動で再コンパイルが行われます。

bash
npx tsc --watch

WebpackやBabelとの連携

TypeScriptをプロジェクトで利用する場合、WebpackやBabelといったツールと連携することが多くあります。これにより、複雑な依存関係を持つアプリケーションのビルドが効率的になります。

Webpackとの連携

Webpackはモジュールバンドラであり、TypeScriptのプロジェクトでもよく使われます。Webpackを使ってTypeScriptファイルをバンドルするには、ts-loaderというWebpackのローダーを使用します。

まず、必要なパッケージをインストールします。

bash
npm install --save-dev webpack webpack-cli ts-loader typescript

次に、webpack.config.jsを作成し、以下のように設定します。

javascript
const path = require('path');

module.exports = {
  entry: './src/index.ts',
  module: {
    rules: [
      {
        test: /\.ts$/,
        use: 'ts-loader',
        exclude: /node_modules/
      }
    ]
  },
  resolve: {
    extensions: ['.ts', '.js']
  },
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  }
};

この設定により、ts-loaderがTypeScriptファイルをコンパイルし、Webpackがそれらをバンドルして1つのJavaScriptファイル(bundle.js)に出力します。

Babelとの連携

BabelはJavaScriptのトランスパイラであり、ES6以降の最新機能を旧バージョンのJavaScriptに変換するために使われます。TypeScriptとBabelを併用することで、トランスパイル後のJavaScriptに対してさらに変換を加えることができます。

まず、必要なパッケージをインストールします。

bash
npm install --save-dev @babel/core @babel/preset-env @babel/preset-typescript typescript

次に、.babelrcファイルを作成して、以下の設定を追加します。

json
{
  "presets": [
    "@babel/preset-env",
    "@babel/preset-typescript"
  ]
}

この設定により、BabelはTypeScriptコードをトランスパイルし、さらにES6以降のJavaScriptを互換性のあるバージョンに変換します。

Babelを使ってトランスパイルを実行するには、次のコマンドを使用します。

bash
npx babel src --out-dir dist --extensions ".ts,.js"

まとめ

TypeScriptのビルドプロセスは、tsconfig.jsonを使ってコンパイラオプションを設定し、効率的にプロジェクトをトランスパイル・ビルドすることが重要です。また、WebpackやBabelと連携することで、より複雑な依存関係を持つプロジェクトにも対応できます。これらのツールを組み合わせることで、TypeScriptプロジェクトのビルドを自動化し、開発効率を向上させることができます。