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」と実行出来る。これは便利だ。
参考: