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

时间:2015-04-20 05:20:29

标签: node.js cygwin npm command-line-interface

我自己发布了一个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 "$0"`

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为我的包生成相同类型的脚本?

1 个答案:

答案 0 :(得分:1)

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