Skip to content

Commit ce7516d

Browse files
authored
fix: npm failing to pass args to wrangler (#505)
* fix: npm failing to pass args to wrangler * add comment * Update packages/cloudflare/src/cli/utils/run-wrangler.ts * Update packages/cloudflare/src/cli/utils/run-wrangler.ts
1 parent 81af13b commit ce7516d

File tree

2 files changed

+38
-5
lines changed

2 files changed

+38
-5
lines changed

.changeset/strange-icons-camp.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@opennextjs/cloudflare": patch
3+
---
4+
5+
fix: npm failing to pass args to wrangler

packages/cloudflare/src/cli/utils/run-wrangler.ts

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,45 @@ type WranglerOptions = {
1212
logging?: "all" | "error";
1313
};
1414

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+
1538
export function runWrangler(options: BuildOptions, args: string[], wranglerOpts: WranglerOptions = {}) {
1639
const result = spawnSync(
1740
options.packager,
1841
[
1942
options.packager === "bun" ? "x" : "exec",
2043
"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+
],
2654
{
2755
shell: true,
2856
stdio: wranglerOpts.logging === "error" ? ["ignore", "ignore", "inherit"] : "inherit",

0 commit comments

Comments
 (0)