@@ -41,7 +41,9 @@ const getAllPackageJsons = async (workspaces, cwd) => {
4141 } ) ;
4242
4343 return Promise . all (
44- workspaceGlobs . map ( ( workspace ) => fastGlob ( `${ workspace } /${ PACKAGE_JSON } ` , { cwd, onlyFiles : true } ) )
44+ workspaceGlobs . map ( ( workspace ) =>
45+ fastGlob ( `${ workspace } /${ PACKAGE_JSON } ` , { cwd, onlyFiles : true } ) . then ( ( files ) => files . sort ( ) )
46+ )
4547 )
4648 . then ( ( allPackages ) =>
4749 allPackages . reduce (
@@ -109,6 +111,16 @@ const getPackageNamesAndPackageDir = (packageFilePaths, cwd) =>
109111 return map ;
110112 } , new Map ( ) ) ;
111113
114+ const getDependencyNamesFromPackageJson = ( {
115+ dependencies = { } ,
116+ peerDependencies = { } ,
117+ devDependencies = { } ,
118+ } = { } ) => Object . keys ( {
119+ ...dependencies ,
120+ ...peerDependencies ,
121+ ...devDependencies ,
122+ } ) ;
123+
112124const getReferencesFromDependencies = (
113125 configName ,
114126 { packageDir } ,
@@ -325,8 +337,8 @@ const execute = async ({
325337
326338 let tsconfigMap = { }
327339 let jsconfigMap = { }
328- const referencesMap = { }
329340 const referencedPackageNames = new Set ( )
341+ const explicitRootReferenceNames = new Set ( getDependencyNamesFromPackageJson ( packageJson ) )
330342 const rootReferenceCandidates = [ ]
331343 packagesMap . forEach ( ( packageEntry , packageName ) => {
332344 const detectedConfig = detectTSConfig ( packageEntry . packageDir , configName , packageEntry . hasTsEntry && createTsConfig , cwd )
@@ -379,7 +391,6 @@ const execute = async ({
379391 packagesMap ,
380392 verbose
381393 ) || [ ] ) . map ( ensurePosixPathStyle ) ;
382- referencesMap [ packageName ] = references
383394 references . forEach ( ( { name } ) => referencedPackageNames . add ( name ) )
384395
385396 const paths = getPathsFromReferences ( references , tsconfigMap , jsconfigMap , ignorePathMappings )
@@ -406,7 +417,9 @@ const execute = async ({
406417 }
407418 } ) ;
408419
409- const rootReferences = rootReferenceCandidates . filter ( ( { name } ) => ! referencedPackageNames . has ( name ) ) ;
420+ const rootReferences = rootReferenceCandidates . filter ( ( { name } ) =>
421+ explicitRootReferenceNames . has ( name ) || ! referencedPackageNames . has ( name )
422+ ) ;
410423 const rootPaths = getPathsFromReferences ( rootReferences , tsconfigMap , { } , ignorePathMappings )
411424
412425 if ( verbose ) {
0 commit comments