意外と簡単。TypeScript+JavaScriptでビルドする方法

with コメントはまだありません

巨大化するWebサービス/アプリの開発現場で着実に市民権を得てきたTypeScript。C#生みの親Anders Hejlsberg老師が作ったとあって開発効率を爆上げしてくれる。非常に筋の良い言語だ。

今回はTypeScriptへJavaScriptソースをインポートし、webpackを使って1ファイルにビルドする方法についてangularプロジェクトを例に取って解説する。「npmとかbowerで落としてきたJavaScriptってTypeScriptからどう使うの〜?」てな事を解決しよう。

 

さくっと分かる(?)ビルド方法

これからつらつらと設定やインポート方法の解説が続くけれど、やりたいことはシンプル。要はTypeScriptでJavaScriptをインポートする命令を書き、それをビルドして1ファイルにする設定をするだけ。それでは詳しく見ていこう。

 

詳しいビルド方法

プロジェクト構成

まずは今回の記事で使うプロジェクトの構成をご紹介。

TypeScript+JavaScriptプロジェクト構成

src/ts/app.tsで書いたTypeScriptソースをdst/js/app.jsへ出力する。

今回はapp.tsからangular.jsを読み込むことを想定して、node_modules以下のJavaScriptソース(angular.js)をTypeScriptへインポートする。ココらへんはBowerを使っているならbower_components以下から読んだりしてもいい。プロジェクトの要件に応じて柔軟に。

tsconfig.jsonとwebpack.config.jsについて詳しくは後述。

 

npm

お次はnpmで必要なパッケージをインストールする。

typescriptは言わずもがな。webpackはTypeScriptとJavaScriptを一つにまとめて1ファイルへビルドするために使う。(ts-loaderはTypeScriptをwebpackでビルドするため)

 

インポートする対象(angular)もインストールする。

 

webpack

パッケージのインストールが終わったら、お次はwebpackの設定へ進もう。webpackのビルド設定はwebpack.config.jsonで行う。

何の事はない普通のビルド設定だけれど、ポイントはresolve.aliasにangularを設定しているところ。こうすると、外部ソース(今回だとangular.js)をインポートする度にパスを書かなくてよくなる。実際の開発現場ではあっちこっちにインポート文を書くことになるからここの設定が生きてくる。

150ピース ジグソーパズルスタジオジブリ作品ポスターコレクション もののけ姫 ミニパズル(10x14.7cm)

 

tsconfig.json

TypeScriptのコンパイル設定をtsconfig.jsonへ書く。このとおり。

今回はインポート方法にフォーカスするために最低限の設定としている。実際の開発現場ではソースマップの設定など必要に応じて書き殴ろう。

 

TypeScriptへJavaScriptソースをインポートする

やれやれ。設定はここまで。いよいよJavaScriptのインポート方法を紹介する。

angular.jsのインポートは import “angular”; と書くだけ。webpack.config.jsで先述したとおり、ここで指定した “angular” はangular.jsへのパスの代わりとして使っている。

 

ビルドして使う

ここまで終われば $ webpack を叩いてTypeScript + JavaScript(angular.js)をビルドしよう。dst/js/app.jsにangularと一緒くたにTypeScriptソースがビルドされているから、index.htmlからはapp.jsを読むだけでいい。(index.htmlでangular.jsを読み込まなくてもいい)。

プロジェクトによってはあえてJavaScriptソースをhtmlなどから別口で読み込みたいことも考えられる。そんな時はwebpackプラグインHtml Webpack Pluginを使おう。

 

番外 TypeScript + Babel on webpackでES5にする方法

プロジェクトによりけりだけれど、ソースをES5互換にしたいことがある。そんなときは僕らのBabelがパパッとやってくれる。webpackからBabelを使い、ビルドプロセスにES5変換を組み込もう。

 

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

 

プロジェクトルートに .babelrc なるBabelの設定ファイルを作る。

 

最後はBabelを使うためのwebpackの設定。ポイントはmodule.loaders.loadersの中身。 “babel”“ts” を指定しており、右から順にビルドプロセスで使われる。

※ “-loader” は省略しても大丈夫。

 

ここまで出来たら $ webpack を実行しよう。無事にES5ソースが出力されるだろう。