@@ -1220,11 +1220,26 @@ function isGlobalConfig(configName: string): configName is ConfigNameGlobal {
1220
1220
function assertConfigExists ( configName : string , configsDefined : string [ ] , definedByFile : string ) {
1221
1221
if ( isGlobalConfig ( configName ) ) return
1222
1222
if ( configsDefined . includes ( configName ) ) return
1223
+ handleUnknownConfig ( configName , configsDefined , definedByFile )
1224
+ assert ( false )
1225
+ }
1226
+ function handleUnknownConfig ( configName : string , configsDefined : string [ ] , definedByFile : string ) {
1223
1227
let errMsg = `${ definedByFile } defines an unknown config ${ pc . bold ( configName ) } `
1224
- const configNameSimilar = getMostSimilar ( configName , configsDefined )
1228
+ let configNameSimilar : string | null = null
1229
+ if ( configName === 'page' ) {
1230
+ configNameSimilar = 'Page'
1231
+ } else {
1232
+ configNameSimilar = getMostSimilar ( configName , configsDefined )
1233
+ }
1225
1234
if ( configNameSimilar ) {
1226
1235
assert ( configNameSimilar !== configName )
1227
- errMsg = `${ errMsg } , did you mean to define ${ pc . bold ( configNameSimilar ) } instead?`
1236
+ errMsg += `, did you mean to define ${ pc . bold ( configNameSimilar ) } instead?`
1237
+ }
1238
+ if ( configName === 'page' ) {
1239
+ assert ( configNameSimilar === 'Page' )
1240
+ errMsg += ` (The name of the config ${ pc . bold ( 'Page' ) } starts with a capital letter ${ pc . bold (
1241
+ 'P'
1242
+ ) } because it usually defines a UI component: a ubiquitous JavaScript convention is to start the name of UI components with a capital letter.)`
1228
1243
}
1229
1244
assertUsage ( false , errMsg )
1230
1245
}
0 commit comments