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 コマンドでアプリケーションのパスを指定すれば指定のアプリケーションが起動できること。
そして、指定するパスが、今回の場合、\ ではなく \\ としてやることでエスケープ(?)して宣言してやることで、C:\application_folder\MyTool.exe を C:\\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.