LoginSignup
8
6

More than 3 years have passed since last update.

TypeScriptのコンパイルからブラウザ反映までを自動でやりたい

Posted at

目的

TypeScripはそのままでは実行できないので、コンパイルしてJavaScriptに変換しなければならない。
またローカルサーバで開発している場合、コンパイルされる毎にブラウザの更新もかけないといけない。
めんどい!!--->自動化したい!!!

環境

環境
windows10
node.js v12.13.0
npm v6.12.0
typescript v3.9.5

今回はnode.jsを使ってTypeScripがインストールされている状態を前提とする。
環境構築にはこちらも参考に。
TypeScriptのインストールから実行まで

初期フォルダ構成はこんな感じ。

TS_Project
  ├─ node_modules
  ├─ app.ts
  ├─ index.html
  ├─ package-lock.json
  └─ package.json

コンパイルの自動化

TSファイルに変更があった場合、自動でコンパイルされるようにする。

まずTypeScript(以下TS)プロジェクトを初期化する
package.jsonが存在するディレクトリで以下のコマンドを実行

コマンドプロンプト
npx tsc --init

tsconfig.jsonが追加されていることを確認。
これにはTSファイルがどのようにコンパイルされるかなどをコントロールする設定が記載されている。

TS_Project
  ├─ node_modules
  ├─ app.ts
  ├─ index.html
  ├─ package-lock.json
  ├─ package.json
  └─ tsconfig.json  <- 追加

後は簡単。

コマンドプロンプト
npx tsc --watch

を実行するだけ。これでTSプロジェクト内のTSファイルに変更が起きた場合、自動でコンパイルしてくれる監視下になる。
--watch-wでも可。

コンパイルまでは自動でできた。

ブラウザを更新の自動化

次にローカルサーバを立てている場合に、ファイルを更新すると自動的にブラウザを更新するようにしたい。
そこで「Lite-Server」をインストールする。

コマンドプロンプト
npm install --save-dev lite-server

package.jsonに追加されていることを確認する。

  "devDependencies": {
    "lite-server": "^2.5.4"
  }

「Lite-Server」をインストールしたら、package.jsonのプロパティにある"scripts"配下に以下を設定する。

 "scripts": {
    "start": "lite-server"  <- 追加
  }

設定後はコマンドプロンプトにnpm startと打ち込むことでサーバが立つようになる。
もちろん、ファイルの更新があったときは自動でブラウザを更新してくれるようになる。

実際の動き

npx tsc -wnpm startで常に監視状態にしておく。
htmlとtsを用意する。

index.html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="./app.js" defer></script> <!-- 追加!! -->
    <title>初めてのTypeScript</title>
</head>
<body>

</body>
</html>
app.ts
console.log('Hello TypeScript')

app.tsファイルを編集すると自動でコンパイル->ブラウザ更新までをしてくれている。

img.gif

「Live Server」を使う手もある

今回はブラウザの自動更新に「Lite-Server」を使ったが、「Visual Studio Code」を使った開発をしているならLive Serverを使う方がお手軽かもしれない。VSCodeの標準拡張機能なので。
まぁそれはまた別のお話で。

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6