假設有沒有這將實現這個功能對你來說,使用path.parse
不必是笨重的圖書館 - 其實,我覺得用這可能是這樣做的最徹底的方法:
let { dir, name, ext } = path.parse("a/path/to/file.json");
let path1 = path.join(dir, name + "-original" + ext);
let path2 = path.join(dir, name + "-comarand" + ext);
該代碼段使用destructuring,所以您需要一個最新版本的節點來運行它。也就是說,你可以用正常訪問解析的路徑對象代替它:
let p = path.parse("a/path/to/file.json");
let path1 = path.join(p.dir, p.name + "-original" + p.ext);
let path2 = path.join(p.dir, p.name + "-comarand" + p.ext);
沒有那麼糟!
如果是這種東西,你會經常在你的項目做,也不會太硬擡出來爲效用函數,就像這樣:
function suffixFilename(path, suffix) {
let { dir, name, ext } = path.parse(path);
return path.join(dir, name + "-" + suffix + ext);
}
let path1 = suffixFilename("a/path/to/file.json", "original");
let path2 = suffixFilename("a/path/to/file.json", "comparand");
這是我的第一個想法,但如果路徑是絕對的,你將不得不考慮'root'。路徑對象中有一個'isAbsolute'函數,但是對於如此簡單的事情,代碼變得相當複雜。我推測我一定錯過了一些東西。 – moefinley
@moefinley:我不確定遵循 - 'dir'總是包含路徑的'root'(如果有的話),所以這個方法應該處理相對路徑和絕對路徑。也就是說,我沒有在這臺PC上訪問適當的節點環境,所以我無法測試這是確定的! –
噢,是的,你是對的。我想我錯過了閱讀文檔。謝謝。 – moefinley