/
githubmirror
/
gutenberg
Обзор
Документация
Войти
/
githubmirror
/
gutenberg
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
trunk
tools/validation/validate-tsconfig.mjs
80 строк
2 KB
Marco Ciampini
ESLint: Replace strict config with bulk suppressions (#81248)
07 авг 2026, 14:34
Не верифицирован
07 авг 2026, 14:34
7f43eaf
Код
Авторство
О чём код?
#!/usr/bin/env node import { fileURLToPath } from 'url'; import { dirname, basename, resolve } from 'path'; import { readFileSync } from 'fs'; import glob from 'glob'; import JSONC from 'jsonc-parser'; let hasErrors = false; const __dirname = dirname( fileURLToPath( import.meta.url ) ); const repoRoot = resolve( __dirname, '../..' ); const rootTsconfigJson = JSONC.parse( readFileSync( resolve( repoRoot, 'tsconfig.json' ), 'utf8' ) ); const packagesWithTypes = glob .sync( 'packages/*/tsconfig.json', { cwd: repoRoot } ) .map( ( tsconfigPath ) => basename( dirname( tsconfigPath ) ) ); for ( const packageName of packagesWithTypes ) { if ( ! rootTsconfigJson.references.some( ( reference ) => reference.path === `packages/${ packageName }` ) ) { console.error( `Missing reference to "packages/${ packageName }" in root tsconfig.json` ); hasErrors = true; } let packageJson; try { packageJson = JSON.parse( readFileSync( resolve( repoRoot, `packages/${ packageName }/package.json` ), 'utf8' ) ); } catch ( e ) { console.error( `Error parsing package.json for package ${ packageName }` ); throw e; } const tsconfigs = glob.sync( `packages/${ packageName }/tsconfig*.json`, { cwd: repoRoot, } ); const references = tsconfigs.flatMap( ( p ) => JSONC.parse( readFileSync( resolve( repoRoot, p ), 'utf8' ) ) .references ?? [] ); if ( packageJson.dependencies ) { for ( const dependency of Object.keys( packageJson.dependencies ) ) { if ( dependency.startsWith( '@wordpress/' ) ) { const dependencyPackageName = dependency.slice( '@wordpress/'.length ); if ( packagesWithTypes.includes( dependencyPackageName ) && ! references.some( ( reference ) => reference.path === `../${ dependencyPackageName }` ) ) { console.error( `Missing reference to "../${ dependencyPackageName }" in packages/${ packageName }/tsconfig.json` ); hasErrors = true; } } } } } process.exit( hasErrors ? 1 : 0 );