何が起きたのか
普段TypeScirptを利用して開発しており、最近gulpプラグインのgulp-shellを導入して、tscコマンドをgulpから実行するようにビルド方法を変更しました。
ところがWindows環境で開発をしている方から、下記のようなエラーが出てビルドできないという報告が入ったので、これをどう対処したかという話をメモしておきます。
[15:53:08] Starting 'tsc'...
'$' �́A�����R�}���h�܂��͊O���R�}���h�A
�����\�ȃv���O�����܂��̓o�b�` �t�@�C���Ƃ��ĔF�������Ă��܂����B
[15:53:08] Finished 'tsc' after 38 ms
まずエラーメッセージを読めるようにする
コマンドプロンプトで文字コードがUTF-8なテキストを表示するを参考に、
- フォントをMSゴシックに変更
- 下記コマンドを実行
chcp 65001
再度ビルドを走らせる
# 前略
'$' is not recognized as an internal or external command,
operable program or batch file.
# 後略
ok.
エラーメッセージでググる
それっぽいのが出てきた
'cmd' is not recognized as an internal or external command, operable program or batch file
パスが通ってない時にでるエラーメッセージらしい。
いやパスは通ってるでしょ・・・と思うがgulp-shellが悪さしてるもんだととりあえず仮説をたてる
gulp-shellのREADMEを眺める
なんかそれっぽいオプションがあった
options.env
こいつを入れてやったら無事に動作してくれた。
終わりに
gulp-shell使ってTSのトランスパイル早くなったのはいいけど、gulpが吸収してくれてた実行環境の差異に振り回されちゃった感じですね。
今回の対処以外にも、tscの実行をnpm scriptsに寄せるという方法も考えましたが、なるべくgulpで完結させたかったのでうまい具合に解決策見つかって良かったです。