我正在创建一个 node 命令行界面.它是全局安装的,并使用bin文件执行.
我计划在我正在处理的文件的根目录下打开一个命令窗口,然后只运行命令,但是我无法确定当前的工作目录,因为process.cwd()
正在返回 node 包的目录.我最初认为,由于代码是使用批处理文件作为包装器执行的(这就是bin文件在没有 node 的情况下开始执行的方式),因此这是不可能的,但coffee脚本设法做到了这一点.我看了一眼咖啡脚本的来源,但无法理解(经验不足).
要亲自测试,请使用此软件包创建一个软件包.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');
有人能解释一下吗.
然后try 在lib/test中获取命令行目录.