Estou criando uma interface de linha de comando do nó. Ele é instalado globalmente e usa um arquivo bin para executar.
Eu pretendo abrir uma janela de comando no diretório raiz dos arquivos nos quais estou trabalhando e, em seguida, basta executar o comando, mas não consegui determinar o diretório de trabalho atual, pois process.cwd()
está retornando o diretório do pacote do nó. Inicialmente, assumi que, como o código está sendo executado usando um arquivo em lotes como invólucro (é assim que os arquivos bin podem ser executados sem o nó no início), é impossível, mas o script de café consegue fazê-lo. Dei uma olhada na fonte do roteiro do café, mas não consegui segui-la (sem experiência suficiente).
Para testá-lo, crie um pacote com este arquivo package.json:
{
"name": "test-package",
"version": "1.0.0",
"bin": {
"test-package": "./bin/test-package"
},
"main": "/lib/test"
}
este arquivo de pacote de teste na lixeira:
#!/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');
Alguém poderia lançar alguma luz sobre isso.
e tente obter o diretório da linha de comandos dentro da lib / test.
process.chdir()
, existe alguma maneira de obter o original?