path
模块提供了一些工具函数,用于处理文件与目录的路径
const path = require('path')
path.basename(path[,ext])
- path
- ext
- 返回string
path.basename()
返回path的最后一个部分
path.delimiter
返回平台特定的路径分隔符
path.dirname(path)
path.dirname
方法返回一个path
的目录名,类似于Unix中的dirname命令
path.extname(path)
path.extname()
方法返回path的扩展名,即从path
的最后一部分中的最后一个.字符到字符串结束。
path.format(pathObject)
从一个对象中返回一个路径字符串。与path.parse()
相反
-
pathObject
-
dir
-
root
-
base
-
name
-
ext
-
当pathObject提供的属性有组合时,有些属性的优先级比其他的高
- 如果提供了pathObject.dir,则pathObject.root会被忽略
- 如果提供了pathObject.base存在,则pathObject.ext和pathObject.name会被忽略
// 如果提供了 `dir`、`root` 和 `base`,则返回 `${dir}${path.sep}${base}`。
// `root` 会被忽略。
path.format({
root: '/ignored',
dir: '/home/user/dir',
base: 'file.txt'
});
// 返回: '/home/user/dir/file.txt'
// 如果没有指定 `dir`,则 `root` 会被使用。
// 如果只提供了 `root` 或 `dir` 等于 `root`,则平台的分隔符不会被包含。
// `ext` 会被忽略。
path.format({
root: '/',
base: 'file.txt',
ext: 'ignored'
});
// 返回: '/file.txt'
// 如果没有指定 `base`,则 `name` + `ext` 会被使用。
path.format({
root: '/',
name: 'file',
ext: '.txt'
});
// 返回: '/file.txt'
path.isAbsolute(path)
path.isAbsolute()
方法会判定path是否是一个绝对路径
path.join([...paths])
-
...path
一个路径片段的序列
path.join()
方法使用平台特定的分隔符把全部给定的path片段连接到一起,并规范化生成的路径
长度为零的字符串,则返回'.'
,表示当前工作目录
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
// 返回: '/foo/bar/baz/asdf'
path.join('foo', {}, 'bar');
// 抛出 'TypeError: Path must be a string. Received {}'
如果任一路径片段不是一个字符串,则抛出 TypeError
。
path.normalize(path)
path.normalize()
方法会规范化给定的path,并解析'...'
和'.'
片段
path.parse(path)
返回一个对象,对象的属性表示path的元素。尾部文件分隔符会被忽略,返回的对象有以下属性
-
dir
-
root
-
base
-
name
-
ext
path.parse('/home/user/dir/file.txt');
// 返回:
// { root: '/',
// dir: '/home/user/dir',
// base: 'file.txt',
// ext: '.txt',
// name: 'file' }
path.relative(from,to)
-
from
-
to
- 返回:
path.relative
方法返回从from
到 to
的相对路径(基于当前工作目录)。如果from
和to
各自解析到同一路径,(调用path.resolve()),则返回一个长度为零的字符串
path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb')
path.resolve([...paths])
path.resolve()
该方法会把一个路径或者路径片段解析成一个绝对路径。
给定的路径的序列是从右往左被处理的,后面每个path被依次解析,直到构造完成一个绝对路径。
path.resolve('/foo/bar', './baz');
// 返回: '/foo/bar/baz'
path.resolve('/foo/bar', '/tmp/file/');
// 返回: '/tmp/file'
path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// 如果当前工作目录为 /home/myself/node,
// 则返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'
path.sep
提供了平台特定的路径片段分割符
Windows 上是
POSIX 上是 /
例如,在 POSIX 上:
'foo/bar/baz'.split(path.sep);
// 返回: ['foo', 'bar', 'baz']
在 Windows 上:
'foo\\bar\\baz'.split(path.sep);
// 返回: ['foo', 'bar', 'baz']