提供用於處理文件路徑和目錄路徑的實用工具 使用方法:const path = require('path');
path.dirname(path)
返回 path 的目錄名
Windows 上:html
> path.dirname('C:\\orandea\\test\\index.html'); 'C:\\orandea\\test' > path.dirname('/foo/bar/baz/asdf/quux'); '/foo/bar/baz/asdf'
POSIX 上:node
> path.dirname('C:\\orandea\\test\\index.html'); '.' > path.dirname('/foo/bar/baz/asdf/quux'); '/foo/bar/baz/asdf'
path.extname(path)
返回 path 的擴展名
Windows上:工具
> path.extname('C:\\orandea\\test\\index.html'); '.html' > path.extname('/foo/bar/baz/asdf/quux.test.md'); '.md' > path.extname('index.'); '.' > path.extname('index'); '' > path.extname('.index'); ''
POSIX 上:ui
> path.extname('C:\\orandea\\test\\index.html'); '.html' > path.extname('/foo/bar/baz/asdf/quux.test.md'); '.md' > path.extname('index.'); '.' > path.extname('index'); '' > path.extname('.index'); ''
path.delimiter
提供特定於平臺的路徑分隔符
Windows 上:spa
> path.delimiter ';'
POSIX 上:code
> path.delimiter ':'
path.sep
提供特定於平臺的路徑片斷分隔符
Windows 上:orm
> path.sep '\\'
POSIX 上:server
> path.sep '/'
path.isAbsolute(path)
檢測 path 是否爲絕對路徑
在 Windows 上:htm
> path.isAbsolute('//server'); true > path.isAbsolute('\\\\server'); true > path.isAbsolute('C:/foo/..'); true > path.isAbsolute('C:\\foo\\..'); true > path.isAbsolute('D:/foo/..'); true > path.isAbsolute('D:\\foo\\..'); true > path.isAbsolute('bar\\baz'); false > path.isAbsolute('bar/baz'); false > path.isAbsolute('.'); false
在 POSIX 上:對象
> path.isAbsolute('//server'); true > path.isAbsolute('\\\\server'); false > path.isAbsolute('C:/foo/..'); false > path.isAbsolute('C:\\foo\\..'); false > path.isAbsolute('D:/foo/..'); false > path.isAbsolute('D:\\foo\\..'); false > path.isAbsolute('bar\\baz'); false > path.isAbsolute('bar/baz'); false > path.isAbsolute('.'); false
若是給定的 path 是零長度字符串,則返回 false
> path.isAbsolute('') false
path.relative(from, to)
根據當前工做目錄返回 from 到 to 的相對路徑
在 Windows 上: > path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb'); '..\\..\\impl\\bbb' 在 POSIX 上: > path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb'); '../../impl/bbb'
若是 from 和 to 路徑相同,則返回零長度的字符串
在 Windows 上: > path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\test\\aaa'); '' 在 POSIX 上: > path.relative('/data/orandea/test/aaa', '/data/orandea/test/aaa'); ''
若是將零長度的字符串傳入 from 或 to,則使用當前工做目錄代替該零長度的字符串
在 Windows 上: > path.relative('C:\\orandea\\test\\aaa', ''); 'D:\\nodejs' > path.relative('', 'C:\\orandea\\test\\aaa'); 'C:\\orandea\\test\\aaa' 在 POSIX 上: > path.relative('/data/orandea/test/aaa', ''); '../../../../root' > path.relative('', '/data/orandea/test/aaa'); '../data/orandea/test/aaa'
path.resolve([...paths])
將路徑或路徑片斷的序列解析爲絕對路徑,給定的路徑序列從右到左進行處理,產生絕對路徑後直接返回。不會再處理其餘參數
在 Windows 上:
> path.resolve('/foo/bar', 'baz'); 'D:\\foo\\bar\\baz' > path.resolve('/foo/bar', './baz'); 'D:\\foo\\bar\\baz' > path.resolve('/foo/bar', '/baz'); 'D:\\baz'
在 POSIX 上:
> path.resolve('/foo/bar', 'baz'); '/foo/bar/baz' > path.resolve('/foo/bar', './baz'); '/foo/bar/baz' > path.resolve('/foo/bar', '/baz'); '/baz'
若是在處理完全部給定的 path 片斷以後還未生成絕對路徑,則再加上當前工做目錄。
在 Windows 上: > path.resolve('bar', 'baz'); 'D:\\nodejs\\bar\\baz' 在 POSIX 上: > path.resolve('bar', 'baz'); '/root/bar/baz'
生成的路徑已規範化,而且除非將路徑解析爲根目錄,不然將刪除尾部斜槓。
在 Windows 上: > path.resolve('/foo/bar/'); 'D:\\foo\\bar' 在 POSIX 上: > path.resolve('/foo/bar/'); '/foo/bar'
零長度的 path 片斷會被忽略。
在Windows上: > path.resolve('', 'baz'); 'D:\\nodejs\\baz' > path.resolve('bar', ''); 'D:\\nodejs\\bar' 在 POSIX 上: > path.resolve('', 'baz'); '/root/baz' > path.resolve('bar', ''); '/root/bar'
若是沒有傳入 path 片斷,則 path.resolve() 將返回當前工做目錄的絕對路徑。
在 Windows 上: > path.resolve(''); 'D:\\nodejs' 在 POSIX > path.resolve(''); '/root'
path.join([...paths])
使用平臺特定的分隔符做爲定界符將全部給定的 path 片斷鏈接在一塊兒,而後規範化生成的路徑
在 Windows 上: > path.join('/foo', 'bar', 'baz/asdf', 'quux', '..'); '\\foo\\bar\\baz\\asdf' > path.join('foo', '', 'bar'); 'foo\\bar' 在 POSIX 上: > path.join('/foo', 'bar', 'baz/asdf', 'quux', '..'); '/foo/bar/baz/asdf' > path.join('foo', '', 'bar'); 'foo/bar'
若是鏈接的路徑字符串是零長度的字符串,則返回 '.',表示當前工做目錄
> path.join(''); '.'
path.normalize(path)
規範化給定的 path,當在path中找到多個連續的路徑段分隔字符時,則替換成單個平臺特定的路徑段分隔符,尾部的分隔符會保留
在 Windows 上:
> path.normalize('C:\\temp\\\\foo\\bar\\..\\'); 'C:\\temp\\foo\\' > path.win32.normalize('C:////temp\\\\/\\/\\/foo/bar'); 'C:\\temp\\foo\\bar'
在 POSIX 上:
> path.normalize('/foo/bar//baz/asdf/quux/..'); '/foo/bar/baz/asdf'
path.format(pathObject)
從對象返回路徑字符串。 與 path.parse() 相反。
pathObject <Object>:
dir <string> root <string> base <string> name <string> ext <string>
path的屬性關係以下:
┌─────────────────────┬────────────┐ │ dir │ base │ ├──────┬ ├──────┬─────┤ │ root │ │ name │ ext │ " / home/user/dir / file .txt " └──────┴──────────────┴──────┴─────┘
Windows 上: > path.format({ ... dir: 'C:\\path\\dir', ... base: 'file.txt' ... }); 'C:\\path\\dir\\file.txt' POSIX 上: //同時提供dir 和 root,則忽略root > path.format({ ... root: '/ignored', ... dir: '/home/user/dir', ... base: 'file.txt' ... }); '/home/user/dir/file.txt' //時提供base和ext, 則忽略ext > path.format({ ... root: '/', ... base: 'file.txt', ... ext: 'ignored' ... }); '/file.txt' //若是未指定 `base`,則使用 `name` + `ext` > path.format({ ... root: '/', ... name: 'file', ... ext: '.txt' ... }); '/file.txt'
path.parse(path)
根據路徑字符串返回一個對象,與 path.format() 相反。
返回的對象將具備如下屬性:
dir <string> root <string> base <string> name <string> ext <string>
Windows 上:
> path.parse('C:\\path\\dir\\file.txt'); { root: 'C:\\', dir: 'C:\\path\\dir', base: 'file.txt', ext: '.txt', name: 'file' }
POSIX 上:
> path.parse('/home/user/dir/file.txt'); { root: '/', dir: '/home/user/dir', base: 'file.txt', ext: '.txt', name: 'file' }
path.basename(path[, ext])
返回 path 的最後一部分,尾部的目錄分隔符將被忽略.
Windows 上:
> path.basename('C:\\temp\\myfile.html'); 'myfile.html' > path.win32.basename('C:\\temp\\myfile.html'); 'myfile.html' > path.posix.basename('C:\\temp\\myfile.html'); 'C:\\temp\\myfile.html' > path.basename('/temp/myfile.html'); 'myfile.html' > path.win32.basename('/temp/myfile.html'); 'myfile.html' > path.posix.basename('/temp/myfile.html'); 'myfile.html' > path.basename('/temp/myfile.html', '.html'); 'myfile' > path.basename('/temp/myfile.html', 'xxx'); 'myfile.html'
POSIX 上:
> path.basename('C:\\temp\\myfile.html'); 'C:\\temp\\myfile.html' > path.win32.basename('C:\\temp\\myfile.html'); 'myfile.html' > path.posix.basename('C:\\temp\\myfile.html'); 'C:\\temp\\myfile.html' > path.basename('/temp/myfile.html'); 'myfile.html' > path.win32.basename('/temp/myfile.html'); 'myfile.html' > path.posix.basename('/temp/myfile.html'); 'myfile.html' > path.basename('/temp/myfile.html', '.html'); 'myfile' > path.basename('/temp/myfile.html', 'xxx'); 'myfile.html'
path.win32
提供對 特定於 Windows 的 path 方法的實現 的訪問 > path.win32 { resolve: [Function: resolve], normalize: [Function: normalize], isAbsolute: [Function: isAbsolute], join: [Function: join], relative: [Function: relative], toNamespacedPath: [Function: toNamespacedPath], dirname: [Function: dirname], basename: [Function: basename], extname: [Function: extname], format: [Function: format], parse: [Function: parse], sep: '\\', delimiter: ';', win32: [Circular], posix: { resolve: [Function: resolve], normalize: [Function: normalize], isAbsolute: [Function: isAbsolute], join: [Function: join], relative: [Function: relative], toNamespacedPath: [Function: toNamespacedPath], dirname: [Function: dirname], basename: [Function: basename], extname: [Function: extname], format: [Function: format], parse: [Function: parse], sep: '/', delimiter: ':', win32: [Circular], posix: [Circular], _makeLong: [Function: toNamespacedPath] }, _makeLong: [Function: toNamespacedPath] }
path.posix
提供對 特定於 POSIX 的 path 方法的實現 的訪問 > path.posix { resolve: [Function: resolve], normalize: [Function: normalize], isAbsolute: [Function: isAbsolute], join: [Function: join], relative: [Function: relative], toNamespacedPath: [Function: toNamespacedPath], dirname: [Function: dirname], basename: [Function: basename], extname: [Function: extname], format: [Function: format], parse: [Function: parse], sep: '/', delimiter: ':', win32: { resolve: [Function: resolve], normalize: [Function: normalize], isAbsolute: [Function: isAbsolute], join: [Function: join], relative: [Function: relative], toNamespacedPath: [Function: toNamespacedPath], dirname: [Function: dirname], basename: [Function: basename], extname: [Function: extname], format: [Function: format], parse: [Function: parse], sep: '\\', delimiter: ';', win32: [Circular], posix: [Circular], _makeLong: [Function: toNamespacedPath] }, posix: [Circular], _makeLong: [Function: toNamespacedPath] }
path.toNamespacedPath(path)
僅在 Windows 系統上,返回給定 path 的等效名稱空間前綴路徑
> path.toNamespacedPath('C:\\temp\\myfile.html') '\\\\?\\C:\\temp\\myfile.html' > path.toNamespacedPath('/temp/myfile.html') '\\\\?\\D:\\temp\\myfile.html'