準備しておくもの
- Visual Studio Code (VSCode)
- Node.js (npm)
- VSCode で
npm install
を実行した作業フォルダ (WorkFolder)
発生したこと
npm でローカルにインストールしたコマンドを VSCode のターミナルから実行しようとしたら、以下のエラーが出た。
PS C:\XXX\WorkFolder> yarn dev
yarn : 用語 'yarn' は、コマンドレット、関数、スクリプト ファイル、または操作可能な
プログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが
含まれている場合はそのパスが正しいことを確認してから、再試行してください。
...
エラー解決のためネットで調べてみても、欲しい内容が点在していて解決に時間がかかった。
なので、解消までの手順をまとめてみた。
解消までの手順
1. ローカルに設定ファイルを配置
2021/05/07 VSCode のバージョンアップで設定ができなくなった可能性あり (2021/05/08追記)
最初に行き着いたのは 環境変数の PATH
にパスを通す必要がある ということ。
これをするにはまず、WorkFolder に設定ファイル (settings.json) を配置する必要がある。
WorkFolder
|- .vscode <-- 無ければフォルダ作成
| |- settings.json <-- 無ければファイル作成
…
(VSCode 全体の settings.json もあるようだが、当然こちらは汚さない)
英語ペラペラな方は以下を確認してね
2. 環境変数を設定する
2021/05/07 VSCode のバージョンアップで手順変更 (2021/05/08追記)
用意した settings.json に以下の内容を記載する。
(既に配置されていれば追記する)
{
"terminal.integrated.env.windows": {
"PATH": "${workspaceFolder}\\node_modules\\.bin;${env:PATH}"
}
}
ターミナル画面右のリストから「ターミナル設定の構成」を選択。
開いた設定画面の Terminal > Integrated > Profiles > Windows
を開いて、下記の修正をする。
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
- "icon": "terminal-powershell"
+ "icon": "terminal-powershell",
+ "env": {
+ "PATH": "${workspaceFolder}\\node_modules\\.bin;${env:PATH}"
+ }
},
${workspaceFolder}
は VSCode で開いているフォルダのパスが入る ので、これを利用してnode_models/.bin
までの(フル)パスを追加する。
追加できているかどうかは、ターミナルで以下のコマンドを実行する。
(既に開いているターミナルには反映されないので開き直す)
PS C:\XXX\WorkFolder> $env:path
C:\xxx\node_modules\.bin;...
追加したパスが表示されていれば成功。
(ターミナルを開き直すと、VSCode からポップアップが出ることもある)
3. PowerShell の実行ポリシー変更
これで解決!と思いきや、まだあるのね。
PS C:\XXX\WorkFolder> yarn dev
yarn : このシステムではスクリプトの実行が無効になっているため、ファイル
C:\XXX\WorkFolder\node_modules\.bin\yarn.ps1 を読み込むことができません。
...
これは PowerShell の実行ポリシーを変更する 必要がある。
ターミナルからは変更できないので、コマンドプロンプトを管理者として実行する。
C:\XXX> PowerShell Set-ExecutionPolicy RemoteSigned
これで、晴れてローカルのコマンドが実行できるようになった!
PS C:\XXX\WorkFolder> yarn dev
yarn run v1.xx.xx
...