LoginSignup
0
3

More than 5 years have passed since last update.

Windowsでnodeのコマンドラインツールを作る時の注意点

Posted at

Windowsでnodeのコマンドラインツールを作り、globalインストールして流してみると、引数が取得されず、首を傾げていた。
下記のように、nodeを指定して、jsファイルを直接いじれば正常に動作する。

a.bat
node cli.js hoge huga

上記では、hogeとhugaが引数として取得されるとする。
しかし、コマンドを直接うつと

b.bat
cli hoge huga

引数が認識されない。

調査

そこで、cliコマンドの中身(cli.cmd)を見てみると

cli.cmd
@%~dp0\.\node_modules\npm\bin\cli.js" %*

上記は、npmによって自動生成される。
Windowsのデフォルトでは、jsファイルを実行した場合、jscriptが使われる。
つまりnpmの自動生成によるcmdファイルが誤っていたことになる。

解決法

最初は、Windowsのjsファイルへのプログラムの紐付けを直せば解決すると踏んでいたが、そう簡単ではなかった。
node 〜.jsという形にする必要がありそうだった。
少し調べていると、下記のようにcli.jsの先頭に、#!/bin/env nodeをつければよかったようだ。

cli.js
#!/bin/env node

// 以下ソース

これにより、npmの動作が変わるようになっているらしい。

0
3
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
0
3