WSLをシェルにしている場合のVSCodeタスク機能の挙動について
VS Codeで統合シェルにWSLを使っているのですが、タスク機能でYarnスクリプトを実行しようとすると
Yarn requires Node.js 4.0 or higher to be installed.
というエラーを吐きます。
統合シェルでYarnを叩くと正常に実行できます。
タスク機能でenvを実行し環境変数を見るとnodeのパスが追加されておらず、nodeが実行できないためエラーが起こっていると思われます。
wslの.bashrcで下記のように確かにパスは通しているので、
export N_PREFIX="$HOME/n"; [[ :$PATH: == ":$N_PREFIX/bin:" ]] || PATH+=":$N_PREFIX/bin" # Added by n-install (see http://git.io/n-install-repo).
おそらく、VS Codeのタスク機能はwslのシェルで設定した環境変数を読んでいないものと思われます。
コマンド前に以下のように書けばコマンドを実行できるのですが、
"export PATH = \" $ HOME / n / bin:$ PATH \" &&"
すべてのコマンド前にこれを追加するのは効率的でなく、また美しくないので、よりスマートな解決策はないでしょうか?
追記
統合シェルは
"terminal.integrated.shell.windows": "C:\Windows\System32\bash.exe"
に設定して使っています。wsl.exeの方はVS Codeが非インタラクティブシェルを走らせるとき、bashではなくshになるっぽい?
Windowsのバージョンはwindows 10 Proの1809(October 2018 Update)です。
情報足らずで申し訳ないです。