@@ -10,7 +10,7 @@ import { fatal, isFatal } from './errors';
1010import { logger } from './log' ;
1111import { tryFn } from './util/fn' ;
1212import { formatJSObject } from './util/js' ;
13- import { findNXMonorepoRoot , isNXMonorepo } from './util/monorepotools' ;
13+ import { findMonorepoRoot , findNXMonorepoRoot , isMonorepo , isNXMonorepo } from './util/monorepotools' ;
1414import { requireTS , resolveNode } from './util/node' ;
1515import { lazy } from './util/promise' ;
1616import { getCommandOutput } from './util/subprocess' ;
@@ -40,10 +40,29 @@ export async function loadConfig(): Promise<Config> {
4040 return { } ;
4141 } ) ( ) ;
4242
43+ const workspacesSetup = await ( async ( ) : Promise < Config [ 'app' ] [ 'workspaces' ] | undefined > => {
44+ if ( isMonorepo ( appRootDir ) && conf . extConfig . workspaces === 'npm' ) {
45+ const { fileType, path : rootOfMonorepo } = findMonorepoRoot ( appRootDir ) ;
46+ if ( fileType === 'yaml' ) {
47+ return undefined ;
48+ }
49+ const pkgJSONOfMonorepoRoot : { workspaces : string [ ] } | null = await tryFn (
50+ readJSON ,
51+ resolve ( rootOfMonorepo , 'package.json' ) ,
52+ ) ;
53+ const workspaces = pkgJSONOfMonorepoRoot ?. workspaces ?? [ ] ;
54+ return {
55+ type : conf . extConfig . workspaces ,
56+ workspaceDirs : workspaces ,
57+ workspaceRoot : rootOfMonorepo ,
58+ } ;
59+ }
60+ return undefined ;
61+ } ) ( ) ;
62+
4363 const appId = conf . extConfig . appId ?? '' ;
4464 const appName = conf . extConfig . appName ?? '' ;
4565 const webDir = conf . extConfig . webDir ?? 'www' ;
46- const workspaces = conf . extConfig . workspaces ;
4766 const cli = await loadCLIConfig ( cliRootDir ) ;
4867
4968 const config : Config = {
@@ -62,7 +81,7 @@ export async function loadConfig(): Promise<Config> {
6281 version : '1.0.0' ,
6382 ...depsForNx ,
6483 } ,
65- workspaces,
84+ workspaces : workspacesSetup ,
6685 ...conf ,
6786 } ,
6887 } ;
0 commit comments