Ermitteln Sie das Befehlszeilen-Arbeitsverzeichnis, wenn Sie das Skript node bin ausführen

Ich erstelle eine Knoten-Befehlszeilenschnittstelle. Es wird global installiert und verwendet eine bin-Datei zur Ausführung.

Ich habe vor, ein Befehlsfenster im Stammverzeichnis der Dateien zu öffnen, an denen ich arbeite, und dann einfach den Befehl auszuführen, aber ich konnte das aktuelle Arbeitsverzeichnis nicht bestimmen alsprocess.cwd() gibt das Verzeichnis des Knotenpakets zurück. Ich habe anfangs angenommen, dass es unmöglich ist, aber coffee-script schafft, da der Code unter Verwendung einer Batch-Datei als Wrapper ausgeführt wird (so können bin-Dateien am Anfang ohne Knoten ausgeführt werden). Ich habe mir die Quelle des Kaffeeskripts angesehen, konnte sie aber nicht nachvollziehen (nicht erfahren genug).

Um es selbst zu testen, erstellen Sie ein Paket mit dieser package.json-Datei:

{
  "name": "test-package",
  "version": "1.0.0",
  "bin": {
    "test-package":  "./bin/test-package"
  },
  "main": "/lib/test"
}

Diese Testpaketdatei in bin:

#!/usr/bin/env node

var path = require('path');
var fs   = require('fs');
var lib  = path.join(path.dirname(fs.realpathSync(__filename)), '../lib');

require(lib + '/test');

Könnte jemand etwas Licht ins Dunkel bringen?

und versuchen Sie dann, das Befehlszeilenverzeichnis in lib / test abzurufen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage