我正在编写nodejs命令行工具。当我通过运行npm install
进行测试并尝试在本地运行它时,npm在node_modules / .bin中创建以下文件:
node_modules/.bin/myapp
包含:
"$basedir/../myapp/dist/myappcli.js" "$@"
exit $?
node_modules/.bin/myapp.cmd
包含:
"%~dp0\..\myapp\dist\myappcli.js" %*
它们并不是非常有用。
另一方面,当我安装流行的nodejs cli工具(例如js-yaml或typings)时,我会获得更多有用的文件:
node_modules/.bin/typings
包含:
#!/bin/sh
basedir=`dirname "$0"`
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../typings/dist/bin.js" "$@"
ret=$?
else
node "$basedir/../typings/dist/bin.js" "$@"
ret=$?
fi
exit $re
node_modules/.bin/typings.cmd
包含:
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\typings\dist\bin.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\typings\dist\bin.js" %*
)
这些实际上成功运行了他们的应用。为什么他们会得到这些花哨的东西?如何让我的应用程序提供此功能?在将文件上传到npm主机之前,是否必须手动将文件添加到tgz中?我希望不是,因为我希望能够直接从github安装我的应用程序,或者至少有npm pack生成最终的,完整的tgz。
由于
答案 0 :(得分:0)