環境變量由shell擴展。節點的fs
方法直接進行文件系統調用。
從process.env
中讀取需要的變量並使用path.join
來連接。
path.join(process.env.HOME, 'foo.bar');
(請注意,你是在Windows上沒有HOME
變量,如果你需要跨平臺。我相信這是USERPROFILE
)
既然你處理用戶輸入,將不得不自己解析路徑組件。
首先,規範化輸入字符串並將其拆分成數組。
var p = path.normalize(inputStr).split(path.sep);
如果第一個元素是~
,與主目錄替換它。
if (p[0] == '~') p[0] = process.env.HOME || process.env.USERPROFILE; // Windows
然後遍歷每個元素,並且如果它與$
啓動時,更換它。
for (var i = 0; i < p.length; i++) {
if (p[i][0] == '$') {
var evar = p[i].substr(1);
if (process.env[evar]) p[i] = process.env[evar];
}
}
最後,加入路徑陣列一起回來,重新正火:
path.join.apply(path, p);
我真的希望答案是內建的,但這應該工作 – jeffheifetz