作用
提供了对路径处理的一些功能。
路径规范
- posix(Linux/macOS)环境下以反斜杠
/作为路径分隔符 - windows 环境中分隔符为正斜杠``
使用前提
引用了 path 模块
const path = require('path');
basename()获取 文件名称
作用
解析一个路径,Node.js 根据操作系统自动适配路径解析逻辑,获得文件的名称及后缀名或者最后一个子路径。在解析前先会自动去除路径最后多余的路径分割符。
应用场景
遍历某个文件夹中所有文件夹时,可获取到每个文件的名称。
语法
基础用法
path.basename(filePath, [suffix])
- filePath 要解析的文件路径
- 解析完成后要截取掉的部分,会将结果从后与 suffix 做匹配:
-
- 若是与文件名称完整匹配,相当于此参数不传
- 若是不传递或 suffix 无法匹配 ,则解析出来的文件名会携带 suffix ,反之只会返回除 suffix 之外内容。
const path = require('path');
console.log(path.basename('D:\Desktop\react-18.3.1\a.html'))
console.log(path.basename('D:\Desktop\react-18.3.1\a.html', '.html'))
console.log(path.basename('D:\Desktop\react-18.3.1\a.html', '.htm'))
console.log(path.basename('D:\Desktop\react-18.3.1\', 'eact-18.3.1'))
console.log(path.basename('D:\Desktop\react-18.3.1\', 'react-18.3.1'))
a.html
a
a.html
r
react-18.3.1
跨环境解析路径
在 windows环境下,windows环境的路径以及posix环境的路径都可以解析成功,
但是在posix环境下只能解析成功posix环境的路径,解析 windows 环境的路径会将斜杠当作文件名称中的一部分,导致路径整体返回。
path.basename('C:\temp\myfile.html'); // 返回 'C:\temp\myfile.html'
delimiter 当前环境变量的分隔符
作用
该属性的值为当前环境下环境变量的分割符。
- windows 环境下为
; - posix 环境下为
:
应用场景
查看用户的环境变量【process.env.PATH】并且想将其分割为列表,每个元素是一个环境变量配置时,可用。
path.sep 默认路径符号
作用
返回当前环境的默认路径符号:
- windows 中是 \
- posix是 /
dirname()获取 文件路径
作用
用于获取要解析路径的除了最后一个子路径的所有路径。在解析前先会自动去除路径最后多余的路径分割符。
console.log(path.dirname('D:\Desktop\react-18.3.1\'))
D:\Desktop
extname() 获取后缀名
作用
在解析前先会自动去除路径最后多余的路径分割符。
之后截取到最后一个.以及.之后的内容。若没有则返回空字符串
parse() 转换路径对象
作用
在解析前先会自动去除路径最后多余的路径分割符。
path.parse()方法返回一个对象,其属性表示路径的重要元素。
语法
path.parse(filePath)
返回对象的属性:
dir<string>root<string>:绝对路径的根目录
-
- Windows 系统:
root为 驱动器号 + 反斜杠(如C:)。 - POSIX 系统(Linux/macOS):
root为 单个正斜杠/。
- Windows 系统:
base<string>: name 与 ext 的拼接name<string>ext<string>
format() 路径对象转字符串
作用
将一个路径对象解析组合成一个完整的路径字符串
语法
path.format(pathObj)
isAbsolute() 是否是绝对路径
语法
path.isAbsolute(filePath)
返回 boolean 表示该字符串是否为绝对路径
join() 聚合子路径
作用
会使用当前环境特定的路径分隔符,将所有给定的路径片段连接起来,然后对生成的路径进行规范化处理
语法
path.join(...pathParts)
normalize()路径字符串规范化
作用
仅进行字符串处理,不检查路径是否真实存在。
将传入的路径字符串进行格式化:
- 自动解析 字符串中的
.(当前目录)和..(上级目录),生成等效的绝对路径。
/foo/bar//baz/asdf/quux/..
C:\temp\\foo\bar\..\
/foo/bar/baz/asdf
C:\temp\foo\
- 将连续多个路径分隔符(如
///或\\)替换为单个平台特定分隔符 - 路径以分隔符结尾(如
/foo/bar/),规范化后仍保留该分隔符。 - 输入为空字符串时,返回
'.'表示当前工作目录。
relative() 获取相对路径
作用
比较两个路径,得到后者相对于前者的相对路径
语法
path.relative(from, to)
路径解析逻辑
- 输入路径会被隐式调用
path.resolve()转换为绝对路径后再计算相对关系。因此,即使输入是相对路径,也能正确输出相对结果 - 若
from和to解析后指向同一路径(调用path.resolve()后结果相同),返回空字符串''。 - 若
from或to是空字符串(''),则用当前工作目录替代空字符串参与计算。 - 若
from或to不是字符串类型,抛出TypeError
应用场景
- 动态生成文件引用路径
const fromPath = path.resolve('src/components');
const toPath = path.resolve('src/utils/logger.js');
const relativePath = path.relative(fromPath, toPath);
// 返回: '../utils/logger.js'
此结果可用于模块导入(如 import logger from '../utils/logger.js')
- 构建工具中的路径映射:
在 Webpack 或 Rollup 配置中,结合 path.relative() 可自动生成资源引用路径,减少硬编码
resolve 获取绝对路径
作用
将路径片段合并,像是 join 一样,然后根据当前文件的绝对路径给出合并后路径的绝对路径。
语法
path.resolve(...paths)
其中绿色框住的是当前文件所处文件夹的路径。