我正在創建一個節點命令行界面。它在全局安裝並使用bin文件執行。確定運行節點bin腳本時的命令行工作目錄
我打算在我正在使用的文件的根目錄下打開一個命令窗口,然後只是運行該命令,但是我一直無法確定當前工作目錄爲process.cwd()
正在返回節點包的目錄。我最初認爲,由於代碼是使用批處理文件作爲包裝來執行的(這就是bin文件如何在沒有節點的情況下執行),那麼這是不可能的,但是咖啡腳本可以做到這一點。我看了一下咖啡腳本的源代碼,但無法遵循它(沒有足夠的經驗)。
爲了測試它爲自己創建一個包,這個文件的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()'之後,有什麼辦法可以獲得原始的? – reergymerej
@reergymerej你可能想在執行chdir()之前先存儲cwd(例如'var originalCwd = process.cwd();'然後執行你的'process.chdir()',然後你可以返回原始的)。 – Swivel
是'../ lib/test'便攜式嗎? – Sebastian