为什么为我的 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
的第一行。
我自己发布了一个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
的第一行。