Put our downloaded copy of Node in the env for every NPM action
Intelephense (PHP language server) has a dependency on `protobufjs` which invokes `node` in the `postinstall` script and if the user did not have a system Node runtime installed that would fail. Have this use our downloaded installation too
This commit is contained in:
parent
e002d9efb0
commit
2d8159998d
1 changed files with 9 additions and 0 deletions
|
@ -62,6 +62,14 @@ impl NodeRuntime {
|
||||||
args: &[&str],
|
args: &[&str],
|
||||||
) -> Result<Output> {
|
) -> Result<Output> {
|
||||||
let attempt = |installation_path: PathBuf| async move {
|
let attempt = |installation_path: PathBuf| async move {
|
||||||
|
let mut env_path = installation_path.join("bin").into_os_string();
|
||||||
|
if let Some(existing_path) = std::env::var_os("PATH") {
|
||||||
|
if !existing_path.is_empty() {
|
||||||
|
env_path.push(":");
|
||||||
|
env_path.push(&existing_path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let node_binary = installation_path.join("bin/node");
|
let node_binary = installation_path.join("bin/node");
|
||||||
let npm_file = installation_path.join("bin/npm");
|
let npm_file = installation_path.join("bin/npm");
|
||||||
|
|
||||||
|
@ -74,6 +82,7 @@ impl NodeRuntime {
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut command = Command::new(node_binary);
|
let mut command = Command::new(node_binary);
|
||||||
|
command.env("PATH", env_path);
|
||||||
command.arg(npm_file).arg(subcommand).args(args);
|
command.arg(npm_file).arg(subcommand).args(args);
|
||||||
|
|
||||||
if let Some(directory) = directory {
|
if let Some(directory) = directory {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue