@@ -12,17 +12,45 @@ type WranglerOptions = {
12
12
logging ?: "all" | "error" ;
13
13
} ;
14
14
15
+ /**
16
+ * Prepends CLI flags with `--` so that certain package managers can pass args through to wrangler
17
+ * properly.
18
+ *
19
+ * npm and yarn require `--` to be used, while pnpm and bun require that it is not used.
20
+ *
21
+ * @param options Build options.
22
+ * @param args CLI args.
23
+ * @returns Arguments with a passthrough flag injected when needed.
24
+ */
25
+ function injectPassthroughFlagForArgs ( options : BuildOptions , args : string [ ] ) {
26
+ if ( options . packager !== "npm" && options . packager !== "yarn" ) {
27
+ return args ;
28
+ }
29
+
30
+ const flagInArgsIndex = args . findIndex ( ( v ) => v . startsWith ( "--" ) ) ;
31
+ if ( flagInArgsIndex !== - 1 ) {
32
+ args . splice ( flagInArgsIndex , 0 , "--" ) ;
33
+ }
34
+
35
+ return args ;
36
+ }
37
+
15
38
export function runWrangler ( options : BuildOptions , args : string [ ] , wranglerOpts : WranglerOptions = { } ) {
16
39
const result = spawnSync (
17
40
options . packager ,
18
41
[
19
42
options . packager === "bun" ? "x" : "exec" ,
20
43
"wrangler" ,
21
- ...args ,
22
- wranglerOpts . environment && `--env ${ wranglerOpts . environment } ` ,
23
- wranglerOpts . target === "remote" && ! wranglerOpts . excludeRemoteFlag && "--remote" ,
24
- wranglerOpts . target === "local" && "--local" ,
25
- ] . filter ( ( v ) : v is string => ! ! v ) ,
44
+ ...injectPassthroughFlagForArgs (
45
+ options ,
46
+ [
47
+ ...args ,
48
+ wranglerOpts . environment && `--env ${ wranglerOpts . environment } ` ,
49
+ wranglerOpts . target === "remote" && ! wranglerOpts . excludeRemoteFlag && "--remote" ,
50
+ wranglerOpts . target === "local" && "--local" ,
51
+ ] . filter ( ( v ) : v is string => ! ! v )
52
+ ) ,
53
+ ] ,
26
54
{
27
55
shell : true ,
28
56
stdio : wranglerOpts . logging === "error" ? [ "ignore" , "ignore" , "inherit" ] : "inherit" ,
0 commit comments