Estoy creando una interfaz de línea de comandos de nodo. Se instala globalmente y utiliza un archivo bin para ejecutarse.
Planeo tener una ventana de comando abierta en el directorio raíz de los archivos en los que estoy trabajando y luego simplemente ejecutar el comando, sin embargo, no he podido determinar el directorio de trabajo actual, ya que process.cwd()está devolviendo el directorio del paquete de nodo. Inicialmente asumí que, dado que el código se está ejecutando usando un archivo por lotes como contenedor (así es como los archivos bin pueden ejecutarse sin nodo al principio), entonces es imposible, pero coffee-script logra hacerlo. Eché un vistazo a la fuente del script de café pero no pude seguirla (no tengo suficiente experiencia).
Para probarlo usted mismo, cree un paquete con este archivo package.json:
{
"name": "test-package",
"version": "1.0.0",
"bin": {
"test-package": "./bin/test-package"
},
"main": "/lib/test"
}
este archivo de paquete de prueba en 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');
¿Alguien podría arrojar algo de luz sobre esto?
y luego intente obtener el directorio de la línea de comandos dentro de lib / test.
process.chdir(), ¿hay alguna forma de obtener el original?