Ich schreibe ein nodejs Kommandozeilenwerkzeug. Wenn ich testen, indem npm install
laufen und versuchen, es lokal ausführen, erstellt npm die folgenden Dateien in node_modules/.bin:Wie bekomme ich das npm-Paket, um funktionierende Skripte in .bin zu haben, wenn es installiert ist?
node_modules/.bin/myapp
enthält:
"$basedir/../myapp/dist/myappcli.js" "[email protected]"
exit $?
node_modules/.bin/myapp.cmd
enthält:
"%~dp0\..\myapp\dist\myappcli.js" %*
Sie sind nicht sehr nützlich.
Auf der anderen Seite, wenn ich beliebt NodeJS cli-Tools wie js-yaml oder Typisierungen installieren, erhalte ich viel nützliche Dateien:
node_modules/.bin/typings
enthalten:
#!/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" "[email protected]"
ret=$?
else
node "$basedir/../typings/dist/bin.js" "[email protected]"
ret=$?
fi
exit $re
node_modules/.bin/typings.cmd
enthält:
@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" %*
)
Diese tatsächlich erfolgreich ihre Apps. Warum bekommen sie dieses ausgefallene Zeug? Wie kann ich meine App dazu befähigen? Muss ich Dateien manuell zu einem tgz hinzufügen, bevor ich sie auf einen npm-Host hochlade? Ich hoffe nicht, weil ich in der Lage sein möchte, meine App direkt von Github zu installieren, oder zumindest npm pack den endgültigen, kompletten tgz generieren zu lassen.
Dank
Kennen Sie die Eigenschaft 'bin', die Sie in package.json definieren können, oder fragen Sie sich, wie Sie die Befehle für Ihren CLI automatisch vervollständigen können? –
Ich habe die bin-Eigenschaft definiert, aber es bringt mir diese komplizierten Skripte nicht. Keine Sorge wegen Tab-Vervollständigung –