Windows で自分の手元のツールを npm run で呼び出す package.json の scripts 設定のメモ

Windows で自分の手元のツールを npm run で呼び出す package.json の scripts 設定のメモです。

この記事は 2022年 ゆるくすすめる ( ワンフットシーバス ) | GWアドベントカレンダー の 5/1 3日目の記事でもあります。

たとえば

Windows で、Visual Studio Code のターミナルで、コマンドプロンプトや Power Shell で動かしているときの想定です。

あるプロジェクトで作業しているときに、手元のツールをサッと起動したい時があります。

たとえば、あるプロジェクトで Wiki を書いているときに便利なツールが C:\application_folder\MyTool.exe という場所に起動できる状態としたとき。私の場合は、Electron で小さいツールを作るときがあるので、そうしたくなるんです。

npm package.json の書き方

ということで package.json の scripts の項目に良い感じに記述して npm run mytool で呼び出せたらいいなと思いまして、以下のように記述したらうまく行きました。

  "scripts": {
    "mytool": "start C:\\application_folder\\MyTool.exe"
  }

大事なところとしては、start コマンドでアプリケーションのパスを指定すれば指定のアプリケーションが起動できること。

Windowsコマンド集:(start)

そして、指定するパスが、今回の場合、\ ではなく \\ としてやることでエスケープ(?)して宣言してやることで、C:\application_folder\MyTool.exeC:\\application_folder\\MyTool.exe としたらうまくいきました!

これで、何か作業するプロジェクトフォルダに行けば、 npm run で起動ができ、いちいち必要なアプリケーションを探して立ち上げなくてよいので、便利になりました!

\ のパスのままだとエラーになる

package.json が JSON 形式の記述なので / のままだと構造が壊れてうまくいかないので、エスケープしてやるアプローチです。

実際、C:\application_folder\MyTool.exe のまま、実行するとこのようなエラーがでてしまいます。ご注意ください。

npm ERR! code EJSONPARSE
npm ERR! file 
npm ERR! JSON.parse Failed to parse json
npm ERR! JSON.parse Unexpected token a in JSON at position 236 while parsing near '...",
npm ERR! JSON.parse     "mytool":"C:\application_folder\M...'
npm ERR! JSON.parse Failed to parse package.json data.
npm ERR! JSON.parse package.json must be actual JSON, not just JavaScript.