跳转到内容

判断路径是否为另一个路径的子路径

ts
import path from 'node:path'

/**
 * 判断路径是否为另一个路径的子路径
 * @param parentPath 父路径
 * @param childPath 子路径
 * @param notSame 相同的路径时否返回 false
 */
function isSubPath(parentPath: string, childPath: string, notSame = true) {
  const relativePath = path.relative(parentPath, childPath)
  if (notSame && relativePath === '') return false
  return !relativePath.startsWith('..') && !path.isAbsolute(relativePath)
}

// 示例用法
const parentPath = '/path/to/another/parent'
const childPath1 = '/path/to/another/parent/child'
const childPath2 = '/path/to/another/test'

console.log(isSubPath(parentPath, childPath1)) // true
console.log(isSubPath(parentPath, childPath2)) // false
// 相同路径
console.log(isSubPath(parentPath, parentPath)) // false
console.log(isSubPath(parentPath, parentPath, false)) // true