@@ -21,14 +21,27 @@ function getPlaygroundDir(): string {
2121 }
2222}
2323
24- function getPlaygroundArgs ( port : number ) : string [ ] {
24+ function getPlaygroundBuildArgs ( ) : string [ ] | null {
2525 switch ( PLAYGROUND_TYPE ) {
2626 case 'react' :
27- return [ 'run' , 'build-and-preview' , '--' , '--port' , port . toString ( ) ] ;
27+ return [ 'run' , 'build' ] ;
2828 case 'web-js' :
29- return [ 'run' , 'build-and-preview' , '--' , '-l' , port . toString ( ) ] ;
29+ return [ 'run' , 'build' ] ;
3030 case 'web-js-script' :
31- return [ 'run' , 'build-and-preview' , '--' , '-l' , port . toString ( ) ] ;
31+ return null ;
32+ default :
33+ throw new Error ( `Unknown PLAYGROUND_TYPE: ${ PLAYGROUND_TYPE } ` ) ;
34+ }
35+ }
36+
37+ function getPlaygroundStartArgs ( port : number ) : string [ ] {
38+ switch ( PLAYGROUND_TYPE ) {
39+ case 'react' :
40+ return [ 'run' , 'preview' , '--' , '--port' , port . toString ( ) ] ;
41+ case 'web-js' :
42+ return [ 'run' , 'serve' , '--' , '-l' , port . toString ( ) ] ;
43+ case 'web-js-script' :
44+ return [ 'run' , 'serve' , '--' , '-l' , port . toString ( ) ] ;
3245 default :
3346 throw new Error ( `Unknown PLAYGROUND_TYPE: ${ PLAYGROUND_TYPE } ` ) ;
3447 }
@@ -41,7 +54,7 @@ export async function spawnPlaygroundNew(projectId: string): Promise<{
4154 const port = await getPort ( ) ;
4255
4356 const playgroundDir = getPlaygroundDir ( ) ;
44- const server = spawn ( 'npm' , getPlaygroundArgs ( port ) , {
57+ const server = spawn ( 'npm' , getPlaygroundStartArgs ( port ) , {
4558 cwd : playgroundDir ,
4659 env : {
4760 ...process . env ,
@@ -76,7 +89,29 @@ export default async function installPlaygroundDeps() {
7689 installProcess . on ( 'close' , ( code : number ) => {
7790 if ( code === 0 ) {
7891 console . log ( `[Global Setup] Dependencies installed successfully in ${ playgroundDir } .` ) ;
79- resolve ( ) ;
92+ const buildCommand = getPlaygroundBuildArgs ( ) ;
93+ if ( ! buildCommand ) {
94+ console . log ( `[Global Setup] No build step required for ${ PLAYGROUND_TYPE } .` ) ;
95+ return resolve ( ) ;
96+ }
97+ const buildProcess = spawn ( 'npm' , buildCommand , {
98+ cwd : playgroundDir ,
99+ stdio : 'inherit' ,
100+ shell : true ,
101+ } ) ;
102+ buildProcess . on ( 'close' , ( buildCode : number ) => {
103+ if ( buildCode === 0 ) {
104+ console . log ( `[Global Setup] Playground built successfully in ${ playgroundDir } .` ) ;
105+ resolve ( ) ;
106+ } else {
107+ reject (
108+ new Error ( `[Global Setup] npm run build failed in ${ playgroundDir } with code ${ buildCode } ` ) ,
109+ ) ;
110+ }
111+ } ) ;
112+ buildProcess . on ( 'error' , ( err : Error ) => {
113+ reject ( new Error ( `[Global Setup] Failed to start build process: ${ err . message } ` ) ) ;
114+ } ) ;
80115 } else {
81116 reject ( new Error ( `[Global Setup] npm install failed in ${ playgroundDir } with code ${ code } ` ) ) ;
82117 }
0 commit comments