我正在创建节点命令行界面。它是全局安装的,并使用bin文件执行。
我计划在正在处理的文件的根目录下打开一个命令窗口,然后运行命令,但是由于process.cwd()
返回节点包的目录,我无法确定当前的工作目录。最初,我假定由于代码是使用批处理文件作为包装器执行的(这是bin文件可以在开始时没有节点的情况下执行的方式),所以这是不可能的,但是coffee-script可以做到这一点。我看了看咖啡脚本的源代码,但无法跟踪(经验不足)。
要自己测试,请使用以下package.json文件创建一个包:
{
"name": "test-package",
"version": "1.0.0",
"bin": {
"test-package": "./bin/test-package"
},
"main": "/lib/test"
}
该测试包文件位于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');
任何人都可以对此有所了解。
然后尝试获取lib / test中的命令行目录。
process.chdir()
,有什么方法可以获取原件?