1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-21 15:04:11 -05:00

fix(task): always use npm for npm run with flags (#24028)

This commit is contained in:
Marvin Hagemeister 2024-05-29 22:16:35 +02:00 committed by GitHub
parent 814ac9a75d
commit 3c3076a84c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 32 additions and 19 deletions

View file

@ -344,24 +344,27 @@ impl ShellCommand for NpmCommand {
mut context: ShellCommandContext,
) -> LocalBoxFuture<'static, ExecuteResult> {
if context.args.first().map(|s| s.as_str()) == Some("run")
&& !context.args.iter().any(|s| s == "--")
&& context.args.len() > 2
// for now, don't run any npm scripts that have a flag because
// we don't handle stuff like `--workspaces` properly
&& !context.args.iter().any(|s| s.starts_with('-'))
{
if let Some(task_name) = context.args.get(1) {
// run with deno task instead
let mut args = vec!["task".to_string(), task_name.to_string()];
args.extend(context.args.iter().skip(2).cloned());
let mut state = context.state;
state.apply_env_var(USE_PKG_JSON_HIDDEN_ENV_VAR_NAME, "1");
return ExecutableCommand::new(
"deno".to_string(),
std::env::current_exe().unwrap(),
)
.execute(ShellCommandContext {
args,
state,
..context
});
}
// run with deno task instead
let mut args = Vec::with_capacity(context.args.len());
args.push("task".to_string());
args.extend(context.args.iter().skip(1).cloned());
let mut state = context.state;
state.apply_env_var(USE_PKG_JSON_HIDDEN_ENV_VAR_NAME, "1");
return ExecutableCommand::new(
"deno".to_string(),
std::env::current_exe().unwrap(),
)
.execute(ShellCommandContext {
args,
state,
..context
});
}
// fallback to running the real npm command
@ -647,7 +650,7 @@ esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../example/bin/example" "$@"
else
else
exec node "$basedir/../example/bin/example" "$@"
fi"#;
assert_eq!(

View file

@ -12,6 +12,10 @@
"npm_run": {
"args": "task npm_run",
"output": "task_npm_run.out"
},
"npm_run_args": {
"args": "task npm_run_args",
"output": "task_npm_run_args.out"
}
}
}

View file

@ -6,6 +6,7 @@
// currently this will execute using the actual `npm run` because we
// haven't implemented the flags for `npm run` yet
"test_using_npm": "npm run non_existent -- --ignore-scripts",
"npm_run": "npm run"
"npm_run": "npm run",
"npm_run_args": "npm run -d echo"
}
}

View file

@ -0,0 +1,5 @@
Task npm_run_args npm run -d echo
npm info using[WILDCARD]
> echo
[WILDCARD]