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.