全局安装的包命令文件奇怪地生成

我一直在一个命令行程序 ,我有一个问题,试图让它安装在全球。

我在package.json中设置了bin,看起来像这样

"bin" : { "bsp" : "bsp.js" } 

无论何时在%appdata%/ npm中生成命令文件,它都会像这样生成它们:

BSP

 "$basedir/node_modules/BlueStacksProfiles/bsp.js" "$@" exit $? 

bsp.cmd

 "%~dp0\node_modules\BlueStacksProfiles\bsp.js" %* 

注意它在两者中都缺less节点命令,并且在第一个节点中没有正确设置basedir(这是不好的,因为如果你尝试从git bash运行它,它将假定错误的basedir)。

而不是说, http服务器

HTTP服务器

 #!/bin/sh basedir=`dirname "$0"` case `uname` in *CYGWIN*) basedir=`cygpath -w "$basedir"`;; esac if [ -x "$basedir/node" ]; then "$basedir/node" "$basedir/node_modules/http-server/bin/http-server" "$@" ret=$? else node "$basedir/node_modules/http-server/bin/http-server" "$@" ret=$? fi exit $ret 

HTTP-server.cmd

 @IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" "%~dp0\node_modules\http-server\bin\http-server" %* ) ELSE ( node "%~dp0\node_modules\http-server\bin\http-server" %* ) 

这只是通用模板,我安装的所有其他全球安装的npm应用程序看起来像这样。 我觉得我从我的package.json丢失了一些东西,但是我找不到在创build全局安装的节点应用程序方面的很多材料。

那么,我做错了什么?

所以,对于任何其他人有这个问题,这是因为我的bin文件没有开始

 #!/usr/bin/env node 

添加,解决了这个问题。