日々精進

新しく学んだことを書き留めていきます

gulpでTypeScriptをフォーマットする

tsfmtを使用する。gulp-tsfmtはtsfmtモジュールを使わず独自にフォーマットロジックを組んでいるっぽい。 なのでgulp-shellを使ってtsfmtを実行することにした。 最初は$(npm bin)/tsfmt -r ./**/*.tsをgulpから実行すればいいのかと思ったが、フォーマット対象のファイルがnot foundになる。。 コンソールから実行するとフォーマットできる。

しょうがないのでgulpの機能でファイル名を渡して貰い1ファイルずつフォーマットをかけるようにした。 指定ファイルをglobから除外するコードは以下。 tsDir + '/**/*.ts', "!" + tsDir + '/**/libs/**'] パスの先頭に!をつければよい。

gulp.task('format', function () {
  // libs下のファイルはフォーマット対象から除く
  return gulp.src([tsDir + '/**/*.ts', "!" + tsDir + '/**/libs/**'], {base: tsDir}).pipe(shell([
    '$(npm bin)/tsfmt -r <%= file.path %>'
  ]));
});

因みにnpm installでプロジェクトインストールしたGlupのタスクは「$(npm bin)/gulp build」のようにして実行したり package.jsonのscriptsに以下のように書いておくと

"scripts": {
  "build": "gulp build"
}

「npm run buld」と実行出来る。これは便利だ。

参考: