summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/tools/task.rs39
-rw-r--r--tests/specs/task/npm_run/__test__.jsonc4
-rw-r--r--tests/specs/task/npm_run/deno.jsonc3
-rw-r--r--tests/specs/task/npm_run/task_npm_run_args.out5
4 files changed, 32 insertions, 19 deletions
diff --git a/cli/tools/task.rs b/cli/tools/task.rs
index 5cb6cc112..2429e5600 100644
--- a/cli/tools/task.rs
+++ b/cli/tools/task.rs
@@ -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!(
diff --git a/tests/specs/task/npm_run/__test__.jsonc b/tests/specs/task/npm_run/__test__.jsonc
index b6cb249b8..7f3ce2885 100644
--- a/tests/specs/task/npm_run/__test__.jsonc
+++ b/tests/specs/task/npm_run/__test__.jsonc
@@ -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"
}
}
}
diff --git a/tests/specs/task/npm_run/deno.jsonc b/tests/specs/task/npm_run/deno.jsonc
index bd6dde873..e923b063c 100644
--- a/tests/specs/task/npm_run/deno.jsonc
+++ b/tests/specs/task/npm_run/deno.jsonc
@@ -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"
}
}
diff --git a/tests/specs/task/npm_run/task_npm_run_args.out b/tests/specs/task/npm_run/task_npm_run_args.out
new file mode 100644
index 000000000..8040ba4f6
--- /dev/null
+++ b/tests/specs/task/npm_run/task_npm_run_args.out
@@ -0,0 +1,5 @@
+Task npm_run_args npm run -d echo
+npm info using[WILDCARD]
+
+> echo
+[WILDCARD]