为什么为我的 npm 包生成的命令脚本与其他包不同?

why the command script generated for my npm package is different than other package?

我自己发布了一个npm包:makeTimeTable

我在cygwin中愉快的安装了:

npm install -g maketimetable

但是当我尝试运行命令行时,抛出一个错误:

/node_modules/maketimetable/cli.js: No such file or directory

最后我发现安装我的包时生成的命令脚本文件(C:\Users\xxx\AppData\Roaming\npm\maketimetable)与我安装的其他全局命令行工具不同,下面是我的:

"$basedir/node_modules/maketimetable/cli.js"   "$@"
exit $?

其他全局命令行工具的脚本是这样的:

#!/bin/sh
basedir=`dirname "[=13=]"`

case `uname` in
    *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac

if [ -x "$basedir/node" ]; then
  "$basedir/node"  "$basedir/node_modules/eslint/bin/eslint.js" "$@"
  ret=$?
else 
  node  "$basedir/node_modules/eslint/bin/eslint.js" "$@"
  ret=$?
fi
exit $ret

所以在其他工具的脚本中,它会区分我是否使用cygwin,它会对路径和目录进行一些不同的处理。但为什么我的包裹的脚本与那些不同?如何让 npm 为我的包生成相同类型的脚本?

尝试将 #!/usr/bin/env node 作为 cli.js 的第一行。