Path 模塊
path 模塊提供了 操作路徑 的功能,我們將介紹如下幾個較為常用的幾個 API
- ??path.resolve([…paths])
將路徑片段??解析為絕對路徑??(從右向左拼接,遇到絕對路徑停止)
// 若參數為空,返回當前工作目錄(process.cwd())
// 遇到 / 開頭的路徑會重置為根目錄(如 path.resolve('/a', 'b') → /a/b)console.log(path.resolve('src', 'images/logo.png'));
// 輸出(當前目錄為 /project):/project/src/images/logo.png
console.log(path.resolve('/tmp', 'file.txt'));
// 輸出:/tmp/file.txt
console.log(path.resolve('file.txt')); //\player\markdown-md\md\Node.js\file.txt
- path.sep
返回路徑分隔符,Windows 下是 ??\??,POSIX 下是 ??/?
console.log(path.sep); // Windows → '\',Linux/macOS → '/'
const customPath = ['dir', 'subdir', 'file.txt'].join(path.sep);
console.log(customPath); // 輸出:dir/subdir/file.txt
- ??path.parse(path)
將路徑解析為一個對象,包含以下屬性:
解析路徑為對象,包含 root、dir、base、ext、name 屬性
const pathObj = path.parse('/dir/target.txt');
console.log(obj); // 輸出:{ root: '/', dir: '/dir', base: 'target.txt', ext: '.txt', name: 'target' }
- ??path.basename(path [, ext])
獲取路徑的??基礎名稱??(最后一段)
// ext:可選,移除指定擴展名(如 .html)
console.log(path.basename('/dir1/file.txt')); // 'file.txt'
console.log(path.basename('/dir1/file.txt', '.txt')); // 'file'
- path.dirname(path)
- 返回路徑的??目錄名??(最后一個分隔符前的部分)
console.log(path.dirname('/dir1/file.txt')); // '/dir1'
- ??path.extname(path)
返回路徑的??擴展名??(最后一個點后的部分)
console.log(path.extname('/dir1/file.txt')); // '.txt'
- path.isAbsolute(path)
判斷路徑是否??絕對路徑??(以 ??/?? 開頭)
console.log(path.isAbsolute('/dir1/file.txt')); // true
console.log(path.isAbsolute('dir1/file.txt')); // false
- path.resolve() vs path.join()
方法 | 特點 | 示例輸出(當前目錄:/project) |
---|---|---|
path.resolve() | 返回絕對路徑,遇到 / 重置根目錄 | resolve(‘src’, ‘/img’) → /img |
path.join() | 僅拼接路徑,不轉換絕對路徑 | join(‘src’, ‘/img’) → src/img |
- path.normalize()
規范化路徑,將多個連續的路徑分隔符(如 Windows 下的 ??\??)合并為一個
console.log(path.normalize('/dir1//dir2/../dir3')); // '/dir1/dir3'
console.log(path.normalize('/a//b ')); // '/a/b'
console.log(path.normalize('/a//b/..')); // '/a'
console.log(path.normalize('/a//b/../..')); // '/'
_dirname 與 process.cwd()??
- __dirname:當前腳本所在目錄(固定值)。
- process.cwd():進程啟動目錄(可動態變化