@@ -2,7 +2,8 @@ import path from "path";
2
2
import { readFile , unlink , writeFile } from "fs/promises" ;
3
3
import { fileURLToPath } from "url" ;
4
4
import actionsCore from "@actions/core" ;
5
- import { isGitHubActions , runCommand } from "../utils.js" ;
5
+ import { $ , cd } from "zx" ;
6
+ import { isGitHubActions } from "../utils.js" ;
6
7
import {
7
8
getDirSizes ,
8
9
calcStatistics ,
@@ -41,27 +42,29 @@ async function runRspack(ctx) {
41
42
data [ name ] = ( data [ name ] || 0 ) + + valueStr ;
42
43
}
43
44
} ;
44
- let remainingLine = "" ;
45
- await runCommand (
45
+ const p = $ . spawn (
46
46
path . join ( rootDir , "node_modules/@rspack/cli/bin/rspack" ) ,
47
47
ctx . rspackArgs ,
48
48
{
49
- verbose : false ,
50
- onData : function ( chunk ) {
51
- const lines = ( remainingLine + chunk ) . split ( "\n" ) ;
52
- remainingLine = lines . pop ( ) ;
53
- lines . forEach ( processLine ) ;
54
- }
49
+ shell : true ,
50
+ stdio : [ "ignore" , "pipe" , "ignore" ]
55
51
}
56
52
) ;
57
-
53
+ let remainingLine = "" ;
54
+ p . stdout . on ( "data" , chunk => {
55
+ const lines = ( remainingLine + chunk ) . split ( "\n" ) ;
56
+ remainingLine = lines . pop ( ) ;
57
+ lines . forEach ( processLine ) ;
58
+ } ) ;
59
+ const exitCode = await new Promise ( resolve => p . once ( "exit" , resolve ) ) ;
58
60
data . exec = Date . now ( ) - start ;
59
61
await promise ;
60
62
if ( dataSetCounter > 1 ) {
61
63
for ( const key of Object . keys ( data ) ) {
62
64
data [ key ] /= dataSetCounter ;
63
65
}
64
66
}
67
+ if ( exitCode !== 0 ) throw new Error ( `Build failed with ${ exitCode } ` ) ;
65
68
data [ "dist size" ] = await getDirSizes ( "dist" ) ;
66
69
return data ;
67
70
}
@@ -70,7 +73,7 @@ export function getScenario(caseName) {
70
73
return {
71
74
async setup ( ) {
72
75
const caseDir = path . resolve ( rootDir , "cases" , caseName ) ;
73
- process . chdir ( caseDir ) ;
76
+ cd ( caseDir ) ;
74
77
const configFilePath = path . resolve ( caseDir , "rspack.config.js" ) ;
75
78
const config = await readFile ( configFilePath ) ;
76
79
const hmrConfig = await getHmrConfig ( path . resolve ( caseDir , "hmr.js" ) ) ;
@@ -105,25 +108,19 @@ module.exports.plugins.push(new (require("../../lib/scenarios/build-plugin.cjs")
105
108
const rspackDir =
106
109
process . env . RSPACK_DIR || path . resolve ( rootDir , ".rspack" ) ;
107
110
console . log ( "Create Rspack package link" ) ;
108
- await runCommand ( "mkdir" , [
109
- "-p" ,
110
- path . resolve ( rootDir , "node_modules/@rspack" )
111
- ] ) ;
112
- await runCommand ( "ln" , [
113
- "-nsf" ,
114
- path . resolve ( rspackDir , "packages/rspack" ) ,
115
- path . resolve ( rootDir , "node_modules/@rspack/core" )
116
- ] ) ;
117
- await runCommand ( "ln" , [
118
- "-nsf" ,
119
- path . resolve ( rspackDir , "packages/rspack-cli" ) ,
120
- path . resolve ( rootDir , "node_modules/@rspack/cli" )
121
- ] ) ;
122
- await runCommand ( "ln" , [
123
- "-nsf" ,
124
- path . resolve ( rspackDir , "packages/rspack-plugin-react-refresh" ) ,
125
- path . resolve ( rootDir , "node_modules/@rspack/plugin-react-refresh" )
126
- ] ) ;
111
+ await $ `mkdir -p ${ path . resolve ( rootDir , "node_modules/@rspack" ) } ` ;
112
+ await $ `ln -nsf ${ path . resolve (
113
+ rspackDir ,
114
+ "packages/rspack"
115
+ ) } ${ path . resolve ( rootDir , "node_modules/@rspack/core" ) } `;
116
+ await $ `ln -nsf ${ path . resolve (
117
+ rspackDir ,
118
+ "packages/rspack-cli"
119
+ ) } ${ path . resolve ( rootDir , "node_modules/@rspack/cli" ) } `;
120
+ await $ `ln -nsf ${ path . resolve (
121
+ rspackDir ,
122
+ "packages/rspack-plugin-react-refresh"
123
+ ) } ${ path . resolve ( rootDir , "node_modules/@rspack/plugin-react-refresh" ) } `;
127
124
} ,
128
125
async warmup ( ctx ) {
129
126
console . log ( "Run Rspack with args:" , ctx . rspackArgs ) ;
@@ -155,7 +152,7 @@ module.exports.plugins.push(new (require("../../lib/scenarios/build-plugin.cjs")
155
152
return writeFile ( path , content ) ;
156
153
} )
157
154
) ;
158
- process . chdir ( rootDir ) ;
155
+ cd ( rootDir ) ;
159
156
}
160
157
} ;
161
158
}
0 commit comments