@@ -40,8 +40,10 @@ import {
4040import { getPackageNameFromSpecifier } from './util/modules.ts' ;
4141import { getKeysByValue } from './util/object.ts' ;
4242import { timerify } from './util/Performance.ts' ;
43- import { basename , dirname , isInternal , join } from './util/path.ts' ;
43+ import { basename , dirname , isInternal , join , toRelative } from './util/path.ts' ;
4444import { extractPatternExtensions } from './util/pattern-extensions.ts' ;
45+ import { formatCauseMessage } from './util/errors.ts' ;
46+ import { logError } from './util/log.ts' ;
4547import { loadConfigForPlugin } from './util/plugin.ts' ;
4648import { ELLIPSIS } from './util/string.ts' ;
4749
@@ -428,14 +430,24 @@ export class WorkspaceWorker {
428430 if ( ! cache . resolveConfig ) {
429431 const isLoad =
430432 typeof plugin . isLoadConfig === 'function' ? plugin . isLoadConfig ( resolveOpts , this . dependencies ) : true ;
431- const localConfig = isLoad && ( await loadConfigForPlugin ( configFilePath , plugin , resolveOpts , pluginName ) ) ;
432- if ( localConfig ) {
433- const inputs = await plugin . resolveConfig ( localConfig , resolveOpts ) ;
434- if ( plugin . isFilterTransitiveDependencies && ! isManifest ) {
435- this . filterTransitiveDependencies ( inputs , configFilePath ) ;
433+ if ( isLoad ) {
434+ try {
435+ const localConfig = await loadConfigForPlugin ( configFilePath , plugin , resolveOpts , pluginName ) ;
436+ if ( localConfig ) {
437+ const inputs = await plugin . resolveConfig ( localConfig , resolveOpts ) ;
438+ if ( plugin . isFilterTransitiveDependencies && ! isManifest ) {
439+ this . filterTransitiveDependencies ( inputs , configFilePath ) ;
440+ }
441+ for ( const input of inputs ) addInput ( input , configFilePath ) ;
442+ cache . resolveConfig = inputs ;
443+ }
444+ } catch ( error ) {
445+ if ( ! ( error instanceof Error ) ) throw error ;
446+ const relPath = toRelative ( configFilePath , this . options . cwd ) ;
447+ const cause = formatCauseMessage ( error , this . options . cwd ) ;
448+ logError ( `Error loading ${ relPath } (${ cause } )` ) ;
449+ logError ( 'Please fix or visit https://knip.dev/reference/known-issues' ) ;
436450 }
437- for ( const input of inputs ) addInput ( input , configFilePath ) ;
438- cache . resolveConfig = inputs ;
439451 }
440452 }
441453 }
0 commit comments