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

时间:2014-08-14 14:18:48

标签: node.js npm

我一直在研究command line program,我在尝试全局安装时遇到了问题。

我在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"   %*

注意它在两个节点中都缺少node命令,并且在第一个节点中它没有正确设置basedir(这很糟糕,因为如果你试图从git bash运行它,它将假设错误的基础)。

相反,http-server

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中的一些内容,但是我找不到有关创建全局安装的节点应用程序的更多内容。

那么,我做错了什么?

1 个答案:

答案 0 :(得分:3)

所以,对于其他有这个问题的人来说,那是因为我的bin文件没有以

开头
#!/usr/bin/env node

添加修复问题。

相关问题