11import * as fs from 'fs' ;
22import * as path from 'path' ;
33
4+ /**
5+ * Interface for Eden monorepo pnpmWorkspace configuration
6+ * Available when emo version >= 3.6.0
7+ */
8+ export interface PnpmWorkspaceConfig {
9+ // Workspace packages configuration (same as workspaces)
10+ packages ?: string [ ] ;
11+ }
12+
413/**
514 * Interface for Eden monorepo configuration
615 * Supports both legacy packages format and new workspaces format
@@ -40,6 +49,8 @@ export interface EdenMonorepoConfig {
4049 } > ;
4150 // New workspaces format (supports glob patterns)
4251 workspaces ?: string [ ] ;
52+ // This has higher priority than packages and workspaces
53+ pnpmWorkspace ?: PnpmWorkspaceConfig ;
4354}
4455
4556/**
@@ -117,11 +128,28 @@ export class MonorepoUtils {
117128
118129 /**
119130 * Get packages from Eden monorepo configuration
120- * Supports both packages array and workspaces array formats
131+ * Supports packages array, workspaces array, and pnpmWorkspace formats
132+ * pnpmWorkspace has the highest priority (emo >= 3.6.0)
121133 */
122134 static getEdenPackages ( rootPath : string , config : EdenMonorepoConfig ) : MonorepoPackage [ ] {
123135 const packages : MonorepoPackage [ ] = [ ] ;
124136
137+ if ( config . pnpmWorkspace && config . pnpmWorkspace . packages && config . pnpmWorkspace . packages . length > 0 ) {
138+ for ( const workspace of config . pnpmWorkspace . packages ) {
139+ const workspacePackages = this . expandWorkspacePattern ( rootPath , workspace ) ;
140+ packages . push ( ...workspacePackages ) ;
141+ }
142+ return packages ; // Return early if pnpmWorkspace is configured
143+ }
144+
145+ // Handle new workspaces array format
146+ if ( config . workspaces && config . workspaces . length > 0 ) {
147+ for ( const workspace of config . workspaces ) {
148+ const workspacePackages = this . expandWorkspacePattern ( rootPath , workspace ) ;
149+ packages . push ( ...workspacePackages ) ;
150+ }
151+ }
152+
125153 // Handle legacy packages array format
126154 if ( config . packages && config . packages . length > 0 ) {
127155 for ( const pkg of config . packages ) {
@@ -154,14 +182,6 @@ export class MonorepoUtils {
154182 }
155183 }
156184
157- // Handle new workspaces array format
158- if ( config . workspaces && config . workspaces . length > 0 ) {
159- for ( const workspace of config . workspaces ) {
160- const workspacePackages = this . expandWorkspacePattern ( rootPath , workspace ) ;
161- packages . push ( ...workspacePackages ) ;
162- }
163- }
164-
165185 return packages ;
166186 }
167187
@@ -327,4 +347,6 @@ export class MonorepoUtils {
327347
328348 return null ;
329349 }
350+
351+
330352}
0 commit comments