next.js/packages/next/src/build/sort-by-page-exts.ts
sort-by-page-exts.ts25 lines855 B
import { extname } from 'path/posix'
import type { PageExtensions } from './page-extensions-type'

export function sortByPageExts(pageExtensions: PageExtensions) {
  return (a: string, b: string) => {
    // prioritize entries according to pageExtensions order
    // for consistency as fs order can differ across systems
    // NOTE: this is reversed so preferred comes last and
    // overrides prior
    const aExt = extname(a)
    const bExt = extname(b)

    const aNoExt = a.substring(0, a.length - aExt.length)
    const bNoExt = b.substring(0, b.length - bExt.length)

    if (aNoExt !== bNoExt) return 0

    // find extension index (skip '.' as pageExtensions doesn't have it)
    const aExtIndex = pageExtensions.indexOf(aExt.substring(1))
    const bExtIndex = pageExtensions.indexOf(bExt.substring(1))

    return bExtIndex - aExtIndex
  }
}
Quest for Codev2.0.0
/
SIGN IN