TypeScriptの開発環境構築(2)

TypeScriptの開発環境

前記事を実施した前提での記事となります。

環境準備(2)

モジュールバンドラー(webpack)等、各ツールのインストールを行います。
webpack、webpackコマンド、devサーバー、ts-loader

$npx i -D webpack webpack-cli webpack-dev-server ts-loader

package.json

webpack設定ファイルの準備

「webpack.config.js」という名称でファイルを作成し、コンフィグ(webpackの各種設定)を指定していきます。
内容は下記で保存。

※書き換えの細かい設定としてよく触る項目
entry・・・作業するファイル指定
output・・・出力先指定、出力ファイル名指定
mode・・・JSの出力形式

modeについて
「development」はまだ可読しやすい様なJSの出力だが、軽量化されていない。
mode: “production”,とすれば、圧縮、軽量化されたJSで書き出せる。

module.exports = {
  entry: {
    bundle: "./src/index.ts",
  },
  output: {
    path: `${__dirname}/dist`,
    filename: "[name].js", // [name]はentryで記述した名前(この設定ならbundle)
  },
  // import文でファイル拡張子を書かずに名前解決するための設定
  // 例...「import World from './world'」と記述すると"world.ts"という名前のファイルをモジュールとして探す
  // モード値を production に設定すると最適化された状態で、
  // development に設定するとソースマップ有効でJSファイルが出力される
  mode: "production",
  resolve: {
    extensions: [".ts", ".js"],
  },
  devServer: {
    static: {
      directory: `${__dirname}/dist`,
    },
    open: true,
  },
  // モジュールに適用するルールの設定(ローダーの設定を行う事が多い)
  module: {
    rules: [
      {
        // 拡張子が.tsのファイルに対してTypeScriptコンパイラを適用する
        test: /\.ts$/,
        loader: "ts-loader",
      },
    ],
  },
  performance: { hints: false },
};

開発用、公開用の各ディレクトリの準備

作業フォルダ配下に下記フォルダを作成する。

・src ・・・ ソース(作業場所)
・dist ・・・ 公開(本番用として出力する場所)

distフォルダ配下に、表示用に「index.html」を作成。
※後に書き出されたJSをブラウザにて動作するか確認する用のファイルです。

後に利用しやすい様に、下記記述で作成しておく。
body内に下記を入れておく。

<div id="root"></div>
<script src="bundle.js"></script>

srcフォルダ配下に、「index.ts」を作成し、編集する。

TSコンパイルの設定ファイルの準備

下記コマンドを実行する。

$npx tsc --init

tsconfig.jsonという設定ファイルが生成されます。用途によって設定を行う。

クラスを管理するファイルの作成

srcフォルダ配下に、「js-class.ts」を作成します。
「js-class.ts」に動作確認用のソースコード、下記を記述する。(なんでも良い)

export default class js-class1{
  message: string;
  construgtor{
  	this.message = message
  }
  public js-class1(elem: HTMLElement | null){
  	if(elem){
  		elem.innerText = this.message
  	}
  }
}

次に、「index.ts」(名前はcommon.tsでもなんでもOK)を作成します。
js-class.tsをインスタンス化して利用する記述。

import js-class from "./js-class";
const root: HTMLElement | null = document.getElementById("root");

//インスタンス化
const js-class = new js-class1("表示させたい文字を引数に入れるよ")
js-class.js-class1(root)

バンドル(一つにまとめる)について

「package.json」を開きます。

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1"
},

の部分を下記に調整する。(ついでにローカルサーバー立ち上げ設定も記述)

"scripts": {
  "build": "webpack",
  "start": "webpack serve"
},

ビルドコマンドを実行する。

$npm run build

distフォルダ内にバンドルされたJSが生成されます。
これは、srcフォルダに先程作成した2つのTSファイルを読み込みコンパイルしたものを、distフォルダに「build.js」として書き出す、という操作になります。

ローカルサーバーの立ち上げについて

個人的には、VSCodeの拡張機能「Live Server」のご利用をお勧めします。
「Go Live」ボタンで起動。

以下でご紹介する「ts-loaderを利用した立ち上げ」ですが、ローカルサーバーの立ち上げの一例であります。
他にもやり方はあると思いますので、個人の使い慣れた制作に合わせるなどご判断下さい。

(バンドルの設定手順で記述したstartの一文があれば良し)
「package.json」を開きます。

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1"
},

の部分が下記の様に「start」があるか確認してください。

"scripts": {
  "start": "webpack serve"
},

調整したら、ローカルサーバーを立ち上げるコマンドを実行します。

$ npm start

正常に動けば自動的にブラウザが開き、「localhost:8080」のページが開かれます。
ブラウザの表示で、「index.ts」の js-class(引数)に入れた文字が表示されていれば成功です。

お疲れ様でした、
以上でTypeScriptの環境構築は以上となります。