LoginSignup
7
8

More than 3 years have passed since last update.

VS Code のターミナルからインストールしたライブラリを実行する

Last updated at Posted at 2019-08-13

はじめに

VS Code のターミナルから、npmやyarnでローカルインストールしたパッケージを実行すると、「そんなコマンド無いです。」的なメッセージが出がちです。

例えば、ローカルインストールした eslint を実行すると、

Windows
'eslint' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

とか

MacOS
bash: eslint: command not found 

の様に実行できません。ローカルインストールした先を環境変数 PATH に設定してないからですが、かといって毎回 ./node_modules/.bin/eslint などと打つのは流石につらい。。

環境変数 PATH を設定する

VS Code のワークスペースに環境変数が設定できるので、以下の様に PATH を設定しておくと便利です。

.code-workspace
{
  "folders": [
    {
      "path": "."
    }
  ],
  "settings": {
    "terminal.integrated.env.windows": {
      "PATH": "${workspaceRoot}\\node_modules\\.bin;${env:PATH}"
    },
    "terminal.integrated.env.osx": {
      "PATH": "${workspaceRoot}/node_modules/.bin:${env:PATH}"
    }
  }
}

Windows なら terminal.integrated.env.windows
Mac なら terminal.integrated.env.osx
に記載します。
Linux なら terminal.integrated.env.linux らしいです。値は多分 Mac と同じだと思います。(環境が無いので未確認。)

package.jsonファイルと同じ場所に .code-workspaceファイルを置くのが好み(folders.path. からも見て取れますね。)なんですが、ユーザー設定に書く方が一般的なんでしょうか?
確かにワークスペース毎に設定ってもの非効率ですかね?
ユーザー設定なら以下な感じでしょうか。

settings.json
{
  "terminal.integrated.env.windows": {
    "PATH": "${workspaceRoot}\\node_modules\\.bin;${env:PATH}"
  },
  "terminal.integrated.env.osx": {
    "PATH": "${workspaceRoot}/node_modules/.bin:${env:PATH}"
  }
}

.code-workspace ファイルとは

Visual Studio や eclipse で言う「プロジェクトファイル」の様なイメージでしょうか。
VS Code のメニューから「ファイル」-「名前を付けてワークスペースを保存」で、作業中のワークスペースを保存できます。「hogehoge.code-workspace」の様に名前を付けられます。
VS Code は前回のワークスペースをデフォルトで開きますが、複数のワークスペースの作業をしている場合は、対象の .code-workspace ファイルをダブルクリックで開けて便利だと思います。

頻繁に使うコマンドは package.json の script に書く

これなら、自動で ./node_modules/.bin にPATHが通った状態だし、VS Code のメニューから「ターミナル」-「タスクの実行」で実行できるので便利です。

package.json
{
...(略)...
  "scripts": {
    "lint": "eslint src/ --ext .ts"
  },
...(略)...
}

みたいな。(例です。コマンドでlintってしないよね。。)

まとめ

複数の開発環境が同居してるのに PATH の設定が辛いからグローバルインストール、あーバージョンがー、といった事態は無くせるんじゃないでしょうか。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8