1- import { lerna } from "../cli/index.js" ;
21import chalk from "chalk" ;
3- import { dirname , join } from "path" ;
2+ import { dirname } from "path" ;
43import { findPackages } from "./findPackages.js" ;
54
6- /**
7- *
8- * @param context {MonoRepo}
9- * @returns {Promise<void> }
10- */
11- export async function compilePackages ( context ) {
12- const { buildCmd, logger, manager, hasLerna} = context ;
5+ async function compilePackagesWithWorkspaceManager ( manager , context ) {
6+ const { buildCmd, logger} = context ;
7+
8+ const child = manager . runMany ( buildCmd ) . toStream ( ) ;
9+
10+ child . stdout . on ( "data" , ( data ) => {
11+ data
12+ . toString ( )
13+ . split ( "\n" )
14+ . filter ( ( line ) => ! ! line . trim ( ) )
15+ . map ( ( line ) => {
16+ logger . info ( line ) ;
17+ } ) ;
18+ } ) ;
19+
20+ child . stderr . on ( "data" , ( data ) => {
21+ data
22+ . toString ( )
23+ . split ( "\n" )
24+ . filter ( ( line ) => ! ! line . trim ( ) )
25+ . map ( ( line ) => {
26+ logger . error ( line ) ;
27+ } ) ;
28+ } ) ;
29+
30+ await child ;
31+ }
32+
33+ async function compilePackagesWithPackageManager ( context ) {
34+ const { buildCmd, logger, manager} = context ;
35+
36+ const pkgs = await findPackages ( context ) ;
1337
14- if ( hasLerna ) {
15- const child = lerna . run ( buildCmd , "--stream" ) . toStream ( ) ;
38+ for ( const { path, pkg} of pkgs ) {
39+ const cwd = dirname ( path ) ;
40+
41+ const child = manager . run ( buildCmd ) . sync ( {
42+ cwd
43+ } ) ;
1644
1745 child . stdout . on ( "data" , ( data ) => {
1846 data
1947 . toString ( )
2048 . split ( "\n" )
2149 . filter ( ( line ) => ! ! line . trim ( ) )
2250 . map ( ( line ) => {
23- logger . info ( line ) ;
51+ logger . info ( chalk . magenta ( pkg . name ) , line . replace ( / ^ > / , "" ) ) ;
2452 } ) ;
2553 } ) ;
2654 child . stderr . on ( "data" , ( data ) => {
@@ -29,40 +57,25 @@ export async function compilePackages(context) {
2957 . split ( "\n" )
3058 . filter ( ( line ) => ! ! line . trim ( ) )
3159 . map ( ( line ) => {
32- logger . error ( line ) ;
60+ logger . error ( chalk . red ( pkg . name ) , line . replace ( / ^ > / , "" ) ) ;
3361 } ) ;
3462 } ) ;
3563
3664 await child ;
37- } else {
38- const pkgs = await findPackages ( context ) ;
39-
40- for ( const { path, pkg} of pkgs ) {
41- const cwd = dirname ( path ) ;
42- const child = manager . run ( buildCmd ) . sync ( {
43- cwd
44- } ) ;
65+ }
66+ }
4567
46- child . stdout . on ( "data" , ( data ) => {
47- data
48- . toString ( )
49- . split ( "\n" )
50- . filter ( ( line ) => ! ! line . trim ( ) )
51- . map ( ( line ) => {
52- logger . info ( chalk . magenta ( pkg . name ) , line . replace ( / ^ > / , "" ) ) ;
53- } ) ;
54- } ) ;
55- child . stderr . on ( "data" , ( data ) => {
56- data
57- . toString ( )
58- . split ( "\n" )
59- . filter ( ( line ) => ! ! line . trim ( ) )
60- . map ( ( line ) => {
61- logger . error ( chalk . red ( pkg . name ) , line . replace ( / ^ > / , "" ) ) ;
62- } ) ;
63- } ) ;
68+ /**
69+ *
70+ * @param context {MonoRepo}
71+ * @returns {Promise<void> }
72+ */
73+ export async function compilePackages ( context ) {
74+ const { workspaceManager, manager, hasWorkspaceManager} = context ;
6475
65- await child ;
66- }
76+ if ( hasWorkspaceManager ) {
77+ return compilePackagesWithWorkspaceManager ( workspaceManager , context ) ;
6778 }
79+
80+ return compilePackagesWithPackageManager ( manager ) ;
6881}
0 commit comments