{"record":{"id":"b9e955c95e244511","repo":"withastro/astro","slug":"colors-green-file","errorCode":null,"errorMessage":"• ${colors.green(file)}","messagePattern":"• \\$\\{colors\\.green\\(file\\)\\}","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"packages/astro/src/content/loaders/glob.ts","lineNumber":348,"sourceCode":"\t\t\t);\n\n\t\t\tconst skipCount = skippedFiles.length;\n\n\t\t\tif (skipCount > 0) {\n\t\t\t\tconst patternList = Array.isArray(globOptions.pattern)\n\t\t\t\t\t? globOptions.pattern.join(', ')\n\t\t\t\t\t: globOptions.pattern;\n\n\t\t\t\tlogger.warn(\n\t\t\t\t\t`The glob() loader cannot be used for files in ${colors.bold('src/content')} when legacy mode is enabled.`,\n\t\t\t\t);\n\t\t\t\tif (skipCount > 10) {\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t`Skipped ${colors.green(skippedFiles.length)} files that matched ${colors.green(patternList)}.`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tlogger.warn(`Skipped the following files that matched ${colors.green(patternList)}:`);\n\t\t\t\t\tskippedFiles.forEach((file) => logger.warn(`• ${colors.green(file)}`));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove entries that were not found this time\n\t\t\tuntouchedEntries.forEach((id) => store.delete(id));\n\n\t\t\tif (!watcher) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twatcher.add(filePath);\n\n\t\t\t// Split negation patterns out and pass them as picomatch's `ignore` option\n\t\t\t// so watcher filtering matches tinyglobby's semantics (set subtraction),\n\t\t\t// not picomatch's default (any-match union). See #17484.\n\t\t\tconst patterns = Array.isArray(globOptions.pattern)\n\t\t\t\t? globOptions.pattern\n\t\t\t\t: [globOptions.pattern];","sourceCodeStart":330,"sourceCodeEnd":366,"githubUrl":"https://github.com/withastro/astro/blob/e294953aa8aadd98d5be92e60a03037b05dbdfd4/packages/astro/src/content/loaders/glob.ts#L330-L366","documentation":"Individual bullet of the legacy-mode skip report: one line per file the glob() loader skipped because it lives in src/content while legacy collections mode is enabled. Read together with the header line, these bullets are the exact set of files the content layer refused to ingest.","triggerScenarios":"Each file under src/content matched by a glob pattern while legacy.collectionsBackwardsCompat is true and the skip count is 10 or fewer.","commonSituations":"Identifying precisely which markdown/data files a half-finished migration left behind under src/content.","solutions":["For each listed file: move it into the content-layer source directory (e.g. src/data/<collection>/)","Or remove the file if obsolete","Once the list is empty and migration is done, disable legacy.collectionsBackwardsCompat"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Enumerate exactly which files the content layer will skip, per the bullet list\nimport { glob } from 'tinyglobby';\nfunction filesLegacyWillSkip(pattern: string | string[], baseDir: string, legacy: boolean): string[] {\n  if (!legacy) return [];\n  return glob.sync(pattern as string, { cwd: baseDir }).filter((f) => baseDir.includes('/src/content'));\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Treat each bullet as an action item: move, migrate, or delete the file","Re-run the dev server after moving files to confirm the list is empty"],"tags":["astro","content-collections","glob-loader","legacy","skipped-files"],"backgroundTag":"legacy-mode-conflict","analyzedSha":"e294953aa8aadd98d5be92e60a03037b05dbdfd4","analyzedAt":"2026-08-18T18:48:03.901Z","contentChangedAt":"2026-08-18T18:48:03.901Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}