Je crée une interface de ligne de commande de nœud. Il est installé globalement et utilise un fichier bin pour s'exécuter.
Je prévois d'ouvrir une fenêtre de commande dans le répertoire racine des fichiers sur lesquels je travaille, puis d'exécuter simplement la commande, mais je n'ai pas pu déterminer le répertoire de travail actuel car il process.cwd()
renvoie le répertoire du package de nœuds. J'ai d'abord supposé que puisque le code est exécuté en utilisant un fichier batch comme wrapper (c'est ainsi que les fichiers bin peuvent s'exécuter sans nœud au début), il est impossible mais coffee-script parvient à le faire. J'ai jeté un coup d'œil à la source de coffee-script mais je n'ai pas pu la suivre (pas assez expérimenté).
Pour le tester par vous-même, créez un package avec ce fichier package.json:
{
"name": "test-package",
"version": "1.0.0",
"bin": {
"test-package": "./bin/test-package"
},
"main": "/lib/test"
}
ce fichier de package de test dans 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');
Quelqu'un pourrait-il faire la lumière là-dessus.
puis essayez d'obtenir le répertoire de ligne de commande dans lib / test.
process.chdir()
, y a-t-il un moyen d'obtenir l'original?