Ich erstelle eine Knotenbefehlszeilenschnittstelle. 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. Ich konnte jedoch das aktuelle Arbeitsverzeichnis nicht ermitteln, da process.cwd()
das Verzeichnis des Knotenpakets zurückgegeben wird. Ich habe anfangs angenommen, dass es unmöglich ist, da der Code mit einer Batch-Datei als Wrapper ausgeführt wird (so können Bin-Dateien am Anfang ohne Knoten ausgeführt werden), aber das Kaffeeskript schafft es. Ich habe mir die Quelle des Kaffeeskripts angesehen, konnte ihr aber nicht folgen (nicht erfahren genug).
Um es selbst zu testen, erstellen Sie ein Paket mit dieser Datei package.json:
{
"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?
Versuchen Sie dann, das Befehlszeilenverzeichnis in lib / test abzurufen.
process.chdir()
es danach eine Möglichkeit, das Original zu erhalten?