path
模块是Node.js
官方提供的、用来处理文件和目录路径的模块。
path.join 拼接路径
path.join([…paths]) // 返回拼接后路径
参数说明:
- paths 路径片段
const path = require('path')
path.join('/a', 'b', 'c', './', 'd') // /a/b/c/d
path.join('/a', 'b', 'c', '../', 'd') // /a/b/d
path.join('/a', 'b/c', 'd') // /a/b/c/d
注意:
- 待拼接的路径中存在
./
,则会被忽略 - 待拼接的路径中存在
../
,则会抵消前面的路径
path.basename 获取文件名称
path.basename(path[, ext]) // 返回文件名称
参数说明:
- path 路径
- ext 要删除的文件后缀名
const path = require('path')
path.basename('/a/b/c')) // C
path.basename('../index.js')) // index.js
path.basename('../index.js', '.js')) // index
path.basename('../index.js', '.json')) // index.js
path.extname 获取文件扩展名
path.extname (path) // 返回文件扩展名称
参数说明:
- path 路径
const path = require('path')
path.extname('../index.js')) // .js
path.resolve 路径转化
path.resolve()
用于将相对路径转化为绝对路径
path.resolve([…paths]) // 返回绝对路径
参数说明:
- paths 路径片段
const path = require('path')
path.resolve('a/b', 'c/d') // 当前目录/a/b/c/d
path.resolve('a/b', '/c/d') // 当前目录/c/d
path.resolve('a/b', './c/d') // 当前目录/a/b/c/d
path.resolve('/a/b', 'c/d') // /a/b/c/d
path.resolve('/a/b', '/c/d') // /c/d
path.resolve('/a/b', './c/d') // /a/b/c/d
path.resolve('/a/b', '../c/d') // /a/c/d
path.relative 相对路径
path.relative(from, to) // 返回 to 路径相对于 from 路径的相对路径
const path = require('path')
path.relative('./', './') //返回 空
path.relative('/a/b/c/d', '/a/b/x/y') // ..\..\x\y
path.relative('/a/b/c', '/x/y/z') // ..\..\..\x\y\z
path.parse() 解析路径
path.parse(path) // 返回一个包含路径信息的对象
参数说明:
- path 路径
const path = require('path')
var pathObj = path.parse('../index.js')
// { root: '', dir: '..', base: 'index.js', ext: '.js', name: 'index' }
console.log(pathObj)
path.format 序列化路径
path.format(pathObj) // 返回路径字符串。与path.parse相反
参数说明:
- pathObj 路径对象。
必须为对象,否则抛出异常
const path = require('path')
/** 提供了 dir 和 base ,则会忽略 root */
// /home/user\index.html
path.format({
root: 'ignored',
dir: '/home/user',
base: 'index.html'
}))
/** 1.若没有提供 dir, 则会使用 root;
* 2.若提供了 base, 则会忽略ext */
// /home/user\index.html
path.format({
root: '/',
base: 'index.html',
ext: 'ignored'
}))
/** 1.若没有提供 base, 则 name + ext 会被使用 */
// /home/user\index.html
path.format({
root: '/',
name: 'index',
ext: '.html'
}))
path.normalize 规范路径
path.normalize
用于将路径中的.
和..
段解析为正确的形式。
path.normalize(path) // 返回规范后的路径
参数说明:
- path 路径
const path = require('path')
path.normalize('/a/b/c/.') // /a/b/c
path.normalize('/a/b/c/..') // /a/b
path.normalize('/a/b/./c/') // /a/b/c
path.normalize('/a/b/../c/') // /a/c
path.normalize('/a/b//c/') // /a/b/c
path.normalize('/a/b///c/') // /a/b/c
path.isAbsolute 是否为绝对路径
path.isAbsolute(path) // 返回一个布尔值
参数说明:
- path 路径
const path = require('path')
path.isAbsolute("") // false
path.isAbsolute(".") // false
path.isAbsolute("/") // true
path.isAbsolute("./") // false
path.isAbsolute("../") // false
path.isAbsolute("abc") // false
path.isAbsolute("/abc") // true
path.isAbsolute("./abc") // false
path.isAbsolute("../abc") // false
常量值
path.sep 特定平台的路径分隔符。(Windows系统 \
;POSIX系统 /
)
// Windows平台
'a\\b\\c'.split(path.sep);
// Returns: ['a', 'b', 'c']
// POSIX 平台
'a/b/c'.split(path.sep);
// Returns: ['a', 'b', 'c']
path.delimiter 特定平台的路径定界符。(Windows系统 ;
;POSIX系统 :
)
// Windows平台
console.log(process.env.PATH);
// Prints: 'C:\Windows\system32;C:\Windows;C:\Program Files\node\'
process.env.PATH.split(path.delimiter);
// Returns ['C:\\Windows\\system32', 'C:\\Windows', 'C:\\Program Files\\node\\']
// POSIX 平台
console.log(process.env.PATH);
// Prints: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin'
process.env.PATH.split(path.delimiter);
// Returns: ['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin']
扩展
__filename
__filename
表示当前执行文件的全路径名