2022-04-15 15:19:05 +00:00
|
|
|
import { existsSync, readFileSync } from 'node:fs'
|
2022-02-28 16:11:46 +00:00
|
|
|
import ignore from 'ignore'
|
|
|
|
import { join, relative } from 'pathe'
|
2022-04-04 09:41:48 +00:00
|
|
|
import { tryUseNuxt } from './context'
|
2022-02-28 16:11:46 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Return a filter function to filter an array of paths
|
|
|
|
*/
|
|
|
|
export function isIgnored (pathname: string): boolean {
|
2022-04-04 09:41:48 +00:00
|
|
|
const nuxt = tryUseNuxt()
|
|
|
|
|
|
|
|
// Happens with CLI reloads
|
|
|
|
if (!nuxt) {
|
2022-08-22 10:12:02 +00:00
|
|
|
return false
|
2022-04-04 09:41:48 +00:00
|
|
|
}
|
2022-02-28 16:11:46 +00:00
|
|
|
|
|
|
|
if (!nuxt._ignore) {
|
|
|
|
nuxt._ignore = ignore(nuxt.options.ignoreOptions)
|
|
|
|
nuxt._ignore.add(nuxt.options.ignore)
|
|
|
|
|
|
|
|
const nuxtignoreFile = join(nuxt.options.rootDir, '.nuxtignore')
|
|
|
|
if (existsSync(nuxtignoreFile)) {
|
|
|
|
nuxt._ignore.add(readFileSync(nuxtignoreFile, 'utf-8'))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-08 14:57:58 +00:00
|
|
|
const cwds = nuxt.options._layers?.map(layer => layer.cwd).sort((a, b) => b.length - a.length)
|
|
|
|
const layer = cwds?.find(cwd => pathname.startsWith(cwd))
|
|
|
|
const relativePath = relative(layer ?? nuxt.options.rootDir, pathname)
|
2022-02-28 16:11:46 +00:00
|
|
|
if (relativePath.startsWith('..')) {
|
|
|
|
return false
|
|
|
|
}
|
2022-08-22 10:12:02 +00:00
|
|
|
return !!(relativePath && nuxt._ignore.ignores(relativePath))
|
2022-02-28 16:11:46 +00:00
|
|
|
}
|