何が起きたのか
普段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
で完結させたかったのでうまい具合に解決策見つかって良かったです。