- Contents -
TypeScriptをコンパイルするコマンド tscがあつかう設定ファイル。
tsconfig.json について、調べたので記載しておく。
TypeScriptの動作ついては、以下のplaygroundで動きを確かめられる。
https://www.typescriptlang.org/play/index.html
tsconfig.json を生成する。
npmの管理下であれば tsc --init でファイルを作成してくれる。
$(npm bin)/tsc --init
# ==> message TS6071: Successfully created a tsconfig.json file.
tsconfig.json は、
TypeScriptで書かれたプロジェクトの
ルートディレクトリに配置する事で、tscコマンドが自動で読み取ってくれる。
tscコマンド実行時のカレントディレクトリにtsconfig.jsonが存在しない場合は、
親ディレクトリを遡って検索するようだ。
--project or -p オプションで指定する事も可能
tsc --project path/to/tsconfig.json
tsconfig 設定例
tsconfig.json は以下のような感じ
公式のドキュメントに書いてあった、tsconfig.json を引っ張ってきた。
ふむふむ、こんな設定かあるのね。
e.g.1)
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true
},
"files": [
"core.ts",
"sys.ts",
"types.ts",
"scanner.ts",
"parser.ts",
"utilities.ts",
"binder.ts",
"checker.ts",
"emitter.ts",
"program.ts",
"commandLineParser.ts",
"tsc.ts",
"diagnosticInformationMap.generated.ts"
]
}
e.g.2)
{
"compilerOptions": {
"module": "system",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"outFile": "../../built/local/tsc.js",
"sourceMap": true
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
globが使えるようになる前は、
filesで個別に1つずつファイル指定して使う事があったようだが、
今はあまりなさそうなケースだ。
ワイルドカード、globについて
include,excludeなどで使える記号です。
記号 | 説明 |
---|---|
* | 何かしらの文字列にマッチ |
? | 何かしらの1文字にマッチ |
**/ | glob サブディレクトリすべてにマッチ |
型定義ファイル
型定義ファイルは、デフォルトでnode_modules/@types 配下が読み込まれるようになっているみたい。
型定義ファイルのインストールは、以下のコマンドで。
npm install --save-dev @types/hoge
別のディレクトリを指定したい場合、typeRoots に配列で複数設定する事ができる。
{
"compilerOptions": {
"typeRoots" : ["./typings"]
}
}
必ず設定しておきたいオプション
target
以下のなかから、指定が可能。
tscでコンパイルした後のjsファイルが
どのECMA Scriptに準ずるか。
- es3
- es5
- es6
es5か、使うブラウザが限定できるならes6にしておくのが良さそう。
module
- none
- commonjs
- system(SystemJS)
- umd
- es6 / es2015
インポート構文の解釈をどうするか的な設定みたいだか、正直よくわからない。
commonjs を使っておくのがベターな模様。
sourceMap: true
sourceMapファイルを生成する。
このファイルがあると、
ChromeなどのDevelopperToolsで見た時に、コンパイル前のソースが見れるようになる。
その他の知っておきたいオプション
outDir
出力先ディレクトリを指定する。
outFile
コンパイルしたtsファイルを一つのjsファイルとして出力する。
noImplicitAny: true
暗黙のany型宣言をエラーにする
noImplicitThis: true
thisに型宣言がないと検出
noUnusedLocals: true
使っていないローカル変数を検出する
noUnusedParameters: true
使っていない引数を検出する
strictNullChecks: true
nullを許容しない
noImplicitReturns: true
戻り値が定義した型じゃないと検出
noEmitOnError: true
コンパイルが失敗したときはjsを吐かない (エラーが発生してもjsファイルを生成しているのか?)