Skip to content

Node.js path 模块

Windows vs POSIX

path 模块在不同操作系统下有差异。POSIX(可移植操作系统接口)标准下路径用正斜杠 /,Windows 用反斜杠 \

跨平台处理时需指定对应实现:

js
path.basename('C:\\temp\\myfile.html')     // 在 POSIX 上结果不对
path.win32.basename('C:\\temp\\myfile.html') // 正确 → 'myfile.html'
  • path.posix — POSIX 系统专用方法
  • path.win32 — Windows 系统专用方法

常用 API

path.basename(path)

返回路径的最后一部分(文件名)。

js
path.basename('/aaa/bbb/ccc/index.html')  // 'index.html'

path.dirname(path)

返回除最后一部分外的路径(目录名),与 basename 互补。

js
path.dirname('/aaa/bbb/ccc/index.html')   // '/aaa/bbb/ccc'

path.extname(path)

返回文件扩展名,多个 . 时返回最后一个,无扩展名返回空。

js
path.extname('file.txt')              // '.txt'
path.extname('file.txt.ddd.aaa')      // '.aaa'
path.extname('file')                  // ''

path.join([...paths])

拼接路径,支持 .. ./ ../ 操作符。

js
path.join('/foo', '/cxk', '/ikun')     // '/foo/cxk/ikun'
path.join('/foo', '/cxk', '/ikun', '../')  // '/foo/cxk/'

path.resolve([...paths])

将相对路径解析为绝对路径

js
path.resolve('/aaa', '/bbb', '/ccc')   // '/ccc'(多个绝对路径取最右边)
path.resolve(__dirname, './index.js')  // '/User/xm/Desktop/node/index.js'
path.resolve('./index.js')             // 工作目录 + '/index.js'

join vs resolve 区别:

  • join 只是拼接,返回相对/绝对取决于参数
  • resolve 一定返回绝对路径(以当前工作目录为基准)

path.parse(path) / path.format(obj)

js
// parse:路径 → 对象
path.parse('/home/user/dir/file.txt')
// {
//   root: '/',
//   dir: '/home/user/dir',
//   base: 'file.txt',
//   ext: '.txt',
//   name: 'file'
// }

// format:对象 → 路径(parse 的逆操作)
path.format({ root: '/', dir: '/home/user/dir', base: 'file.txt' })
// '/home/user/dir/file.txt'