vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
24 lines (23 loc) • 1.3 kB
JavaScript
import '../assertEnvVite.js';
export { findPageFiles };
import { glob } from 'tinyglobby';
import { scriptFileExtensionPattern } from '../../../utils/isScriptFile.js';
import { toPosixPath } from '../../../utils/path.js';
import { assertWarning } from '../../../utils/assert.js';
import pc from '@brillout/picocolors';
import { getOutDirs } from './getOutDirs.js';
async function findPageFiles(config, fileTypes, isDev) {
const cwd = config.root;
const { outDirRoot } = getOutDirs(config, undefined);
const timeBase = new Date().getTime();
let pageFiles = await glob(fileTypes.map((fileType) => `**/*${fileType}.${scriptFileExtensionPattern}`), { ignore: ['**/node_modules/**', `${outDirRoot}/**`], cwd, dot: false, expandDirectories: false });
pageFiles = pageFiles.map((p) => '/' + toPosixPath(p));
const time = new Date().getTime() - timeBase;
if (isDev) {
// We only warn in dev, because while building it's expected to take a long time as tinyglobby is competing for resources with other tasks
assertWarning(time < 1.5 * 1000, `Finding your page files ${pc.cyan('**/*.page.*')} took an unexpected long time (${time}ms). Reach out to the vike maintainer.`, {
onlyOnce: 'slow-page-files-search',
});
}
return pageFiles;
}