Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
[[case]]
name = "pnpm_runtime_disabled_for_managed_node"
vp = "global"
seed-runtime = false
skip-platforms = ["windows"]
comment = "Vite+ owns Node.js runtime management independently from the selected pnpm binary."
steps = [
{ argv = ["vpt", "write-file", "package.json", "{\"name\":\"pnpm-runtime-management\",\"private\":true,\"packageManager\":\"pnpm@11.1.0\",\"devEngines\":{\"runtime\":{\"name\":\"node\",\"version\":\"20.18.0\",\"onFail\":\"download\"}}}\n"], snapshot = false },
{ argv = ["vpt", "write-file", "$VP_HOME/js_runtime/node/20.18.0/bin/node", "#!/bin/sh\n"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "$VP_HOME/js_runtime/node/20.18.0/bin/node"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "system-bin/pnpm"], snapshot = false },
{ argv = ["vp", "env", "on", "node"], snapshot = false },
{ argv = ["vp", "env", "off", "pnpm"], snapshot = false },
{ argv = ["pnpm", "install"], envs = [["PATH", "${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH}"], ["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "direct system-first pnpm disables its duplicate Node.js runtime" },
{ argv = ["vp", "install"], envs = [["PATH", "${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH}"], ["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "pnpm-backed vp install applies the same system-first policy" },
{ argv = ["vpt", "write-file", "$VP_HOME/package_manager/pnpm/11.1.0/pnpm/bin/pnpm", "#!/bin/sh\nif [ \"$1\" = \"--version\" ]; then printf '11.1.0\\n'; else printf 'PNPM_CONFIG_RUNTIME=%s\\n' \"${PNPM_CONFIG_RUNTIME-unset}\"; fi\n"], snapshot = false },
{ argv = ["vpt", "write-file", "$VP_HOME/package_manager/pnpm/11.1.0/pnpm/bin/pnpx", "#!/bin/sh\nprintf 'PNPM_CONFIG_RUNTIME=%s\\n' \"${PNPM_CONFIG_RUNTIME-unset}\"\n"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "$VP_HOME/package_manager/pnpm/11.1.0/pnpm/bin/pnpm"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "$VP_HOME/package_manager/pnpm/11.1.0/pnpm/bin/pnpx"], snapshot = false },
{ argv = ["vpt", "mkdir", "other"], snapshot = false },
{ argv = ["vpt", "write-file", "other/package.json", "{\"name\":\"other\",\"private\":true,\"devEngines\":{\"runtime\":{\"name\":\"deno\",\"version\":\"2.0.0\",\"onFail\":\"download\"}}}\n"], snapshot = false },
{ argv = ["vpt", "mkdir", "child"], snapshot = false },
{ argv = ["vp", "env", "on", "pnpm"], snapshot = false },
{ argv = ["pnpm", "install"], envs = [["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "direct managed pnpm disables its duplicate Node.js runtime" },
{ argv = ["pnpx", "package"], envs = [["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "the pnpx alias receives the same child-only override" },
{ argv = ["pnpx", "package", "--dir", "other"], envs = [["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "pnpx forwards --dir to the downloaded command without changing runtime ownership" },
{ argv = ["pnpm", "exec", "package", "--dir", "other"], envs = [["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "pnpm exec forwards --dir after the command without changing runtime ownership" },
{ argv = ["pnpm", "runtime", "set", "deno", "2"], envs = [["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "an explicit runtime command keeps pnpm runtime management enabled" },
{ argv = ["pnpm", "add", "bun@runtime:1.2.0"], envs = [["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "an explicit runtime dependency keeps pnpm runtime management enabled" },
{ argv = ["vp", "install"], envs = [["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "pnpm-backed vp install applies the same managed-pnpm policy" },
{ argv = ["vp", "install"], cwd = "child", envs = [["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "vp install from a child directory uses the parent package's managed Node.js" },
]

[[case]]
name = "pnpm_runtime_preserved_for_mixed_runtimes"
vp = "global"
seed-runtime = false
skip-platforms = ["windows"]
comment = "Vite+ must not disable pnpm runtimes that it cannot manage."
steps = [
{ argv = ["vpt", "write-file", "package.json", "{\"name\":\"pnpm-runtime-management\",\"private\":true,\"packageManager\":\"pnpm@11.1.0\",\"devEngines\":{\"runtime\":[{\"name\":\"node\",\"version\":\"20.18.0\",\"onFail\":\"download\"},{\"name\":\"deno\",\"version\":\"2.0.0\",\"onFail\":\"download\"}]}}\n"], snapshot = false },
{ argv = ["vpt", "write-file", "$VP_HOME/js_runtime/node/20.18.0/bin/node", "#!/bin/sh\n"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "$VP_HOME/js_runtime/node/20.18.0/bin/node"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "system-bin/pnpm"], snapshot = false },
{ argv = ["vp", "env", "on", "node"], snapshot = false },
{ argv = ["vp", "env", "off", "pnpm"], snapshot = false },
{ argv = ["pnpm", "install"], envs = [["PATH", "${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH}"], ["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "direct pnpm preserves runtime management for a mixed declaration" },
{ argv = ["vp", "install"], envs = [["PATH", "${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH}"], ["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "vp install preserves the same mixed-runtime setting" },
]

[[case]]
name = "pnpm_runtime_preserved_for_system_first_node"
vp = "global"
seed-runtime = false
skip-platforms = ["windows"]
comment = "pnpm keeps runtime ownership when Vite+ does not manage Node.js."
steps = [
{ argv = ["vpt", "write-file", "package.json", "{\"name\":\"pnpm-runtime-management\",\"private\":true,\"packageManager\":\"pnpm@11.1.0\",\"devEngines\":{\"runtime\":{\"name\":\"node\",\"version\":\"20.18.0\",\"onFail\":\"download\"}}}\n"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "system-bin/node"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "system-bin/pnpm"], snapshot = false },
{ argv = ["vp", "env", "off", "node"], snapshot = false },
{ argv = ["vp", "env", "off", "pnpm"], snapshot = false },
{ argv = ["pnpm", "install"], envs = [["PATH", "${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH}"], ["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "direct pnpm preserves runtime management with system-first Node.js" },
{ argv = ["vp", "install"], envs = [["PATH", "${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH}"], ["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "vp install preserves the same system-first Node.js policy" },
]

[[case]]
name = "pnpm_runtime_preserved_for_engines_runtime"
vp = "global"
seed-runtime = false
skip-platforms = ["windows"]
comment = "pnpm runtime declarations in engines are part of the same process-wide policy."
steps = [
{ argv = ["vpt", "write-file", "package.json", "{\"name\":\"pnpm-runtime-management\",\"private\":true,\"packageManager\":\"pnpm@11.1.0\",\"devEngines\":{\"runtime\":{\"name\":\"node\",\"version\":\"20.18.0\",\"onFail\":\"download\"}},\"engines\":{\"runtime\":{\"name\":\"deno\",\"version\":\"2.0.0\",\"onFail\":\"download\"}}}\n"], snapshot = false },
{ argv = ["vpt", "write-file", "$VP_HOME/js_runtime/node/20.18.0/bin/node", "#!/bin/sh\n"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "$VP_HOME/js_runtime/node/20.18.0/bin/node"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "system-bin/pnpm"], snapshot = false },
{ argv = ["vp", "env", "on", "node"], snapshot = false },
{ argv = ["vp", "env", "off", "pnpm"], snapshot = false },
{ argv = ["pnpm", "install"], envs = [["PATH", "${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH}"], ["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "direct pnpm preserves the Deno runtime declared in engines.runtime" },
{ argv = ["vp", "install"], envs = [["PATH", "${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH}"], ["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "vp install preserves the same engines.runtime setting" },
]

[[case]]
name = "pnpm_runtime_preserved_for_workspace_member"
vp = "global"
seed-runtime = false
skip-platforms = ["windows"]
comment = "A runtime required by any workspace member keeps pnpm runtime management enabled."
steps = [
{ argv = ["vpt", "write-file", "package.json", "{\"name\":\"pnpm-runtime-management\",\"private\":true,\"packageManager\":\"pnpm@11.1.0\",\"devEngines\":{\"runtime\":{\"name\":\"node\",\"version\":\"20.18.0\",\"onFail\":\"download\"}}}\n"], snapshot = false },
{ argv = ["vpt", "write-file", "pnpm-workspace.yaml", "packages:\n - packages/*\n"], snapshot = false },
{ argv = ["vpt", "mkdir", "packages/member"], snapshot = false },
{ argv = ["vpt", "write-file", "packages/member/package.json", "{\"name\":\"member\",\"version\":\"1.0.0\",\"devEngines\":{\"runtime\":{\"name\":\"bun\",\"version\":\"1.2.0\",\"onFail\":\"download\"}}}\n"], snapshot = false },
{ argv = ["vpt", "write-file", "$VP_HOME/js_runtime/node/20.18.0/bin/node", "#!/bin/sh\n"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "$VP_HOME/js_runtime/node/20.18.0/bin/node"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "system-bin/pnpm"], snapshot = false },
{ argv = ["vp", "env", "on", "node"], snapshot = false },
{ argv = ["vp", "env", "off", "pnpm"], snapshot = false },
{ argv = ["pnpm", "install"], envs = [["PATH", "${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH}"], ["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "direct pnpm preserves the member's Bun runtime" },
{ argv = ["vp", "install"], envs = [["PATH", "${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH}"], ["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "vp install preserves the same workspace-wide setting" },
]

[[case]]
name = "pnpm_runtime_uses_explicit_working_directory"
vp = "global"
seed-runtime = false
skip-platforms = ["windows"]
comment = "Direct pnpm evaluates runtime ownership in the project selected by -C."
steps = [
{ argv = ["vpt", "write-file", "package.json", "{\"name\":\"pnpm-runtime-management\",\"private\":true,\"packageManager\":\"pnpm@11.1.0\",\"devEngines\":{\"runtime\":{\"name\":\"node\",\"version\":\"20.18.0\",\"onFail\":\"download\"}}}\n"], snapshot = false },
{ argv = ["vpt", "mkdir", "other"], snapshot = false },
{ argv = ["vpt", "write-file", "other/package.json", "{\"name\":\"other\",\"private\":true,\"devEngines\":{\"runtime\":{\"name\":\"deno\",\"version\":\"2.0.0\",\"onFail\":\"download\"}}}\n"], snapshot = false },
{ argv = ["vpt", "write-file", "$VP_HOME/js_runtime/node/20.18.0/bin/node", "#!/bin/sh\n"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "$VP_HOME/js_runtime/node/20.18.0/bin/node"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "system-bin/pnpm"], snapshot = false },
{ argv = ["vp", "env", "on", "node"], snapshot = false },
{ argv = ["vp", "env", "off", "pnpm"], snapshot = false },
{ argv = ["pnpm", "-C", "other", "install"], envs = [["PATH", "${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH}"], ["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "the target project's Deno runtime remains managed by pnpm" },
{ argv = ["pnpm", "-C=other", "install"], envs = [["PATH", "${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH}"], ["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "the short equals form resolves the same target project" },
]

[[case]]
name = "pnpm_runtime_preserved_for_conflicting_node_versions"
vp = "global"
seed-runtime = false
skip-platforms = ["windows"]
comment = "pnpm keeps runtime ownership when Vite+ selects a different Node.js version."
steps = [
{ argv = ["vpt", "write-file", "package.json", "{\"name\":\"pnpm-runtime-management\",\"private\":true,\"packageManager\":\"pnpm@11.1.0\",\"devEngines\":{\"runtime\":{\"name\":\"node\",\"version\":\"22.11.0\",\"onFail\":\"download\"}}}\n"], snapshot = false },
{ argv = ["vpt", "write-file", ".node-version", "20.18.0\n"], snapshot = false },
{ argv = ["vpt", "write-file", "$VP_HOME/js_runtime/node/20.18.0/bin/node", "#!/bin/sh\n"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "$VP_HOME/js_runtime/node/20.18.0/bin/node"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "system-bin/pnpm"], snapshot = false },
{ argv = ["vp", "env", "on", "node"], snapshot = false },
{ argv = ["vp", "env", "off", "pnpm"], snapshot = false },
{ argv = ["pnpm", "install"], envs = [["PATH", "${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH}"], ["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "direct pnpm preserves the conflicting Node.js runtime" },
{ argv = ["vp", "install"], envs = [["PATH", "${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH}"], ["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "vp install preserves the same conflicting runtime" },
]

[[case]]
name = "pnpm_runtime_uses_target_node_version"
vp = "global"
seed-runtime = false
skip-platforms = ["windows"]
comment = "The managed Node.js selected for direct pnpm matches the project inspected for runtime ownership."
steps = [
{ argv = ["vpt", "write-file", "package.json", "{\"name\":\"pnpm-runtime-management\",\"private\":true,\"packageManager\":\"pnpm@11.1.0\"}\n"], snapshot = false },
{ argv = ["vpt", "write-file", ".node-version", "20.18.0\n"], snapshot = false },
{ argv = ["vpt", "mkdir", "other"], snapshot = false },
{ argv = ["vpt", "write-file", "other/package.json", "{\"name\":\"other\",\"private\":true,\"devEngines\":{\"runtime\":{\"name\":\"node\",\"version\":\"22.11.0\",\"onFail\":\"download\"}}}\n"], snapshot = false },
{ argv = ["vpt", "write-file", "$VP_HOME/js_runtime/node/20.18.0/bin/node", "#!/bin/sh\n"], snapshot = false },
{ argv = ["vpt", "write-file", "$VP_HOME/js_runtime/node/22.11.0/bin/node", "#!/bin/sh\n"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "$VP_HOME/js_runtime/node/20.18.0/bin/node"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "$VP_HOME/js_runtime/node/22.11.0/bin/node"], snapshot = false },
{ argv = ["vpt", "write-file", "$VP_HOME/package_manager/pnpm/11.1.0/pnpm/bin/pnpm", "#!/bin/sh\nif [ \"$1\" = \"--version\" ]; then printf '11.1.0\\n'; else printf 'VP_ACTIVE_NODE=%s\\nPNPM_CONFIG_RUNTIME=%s\\n' \"${VP_ACTIVE_NODE-unset}\" \"${PNPM_CONFIG_RUNTIME-unset}\"; fi\n"], snapshot = false },
{ argv = ["vpt", "chmod", "+x", "$VP_HOME/package_manager/pnpm/11.1.0/pnpm/bin/pnpm"], snapshot = false },
{ argv = ["vp", "env", "on", "node"], snapshot = false },
{ argv = ["vp", "env", "on", "pnpm"], snapshot = false },
{ argv = ["pnpm", "-C", "other", "install"], envs = [["VP_DEBUG_SHIM", "1"], ["PNPM_CONFIG_RUNTIME", "from-user"]], comment = "the target Node.js version and runtime opt-out are applied together" },
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
# pnpm_runtime_disabled_for_managed_node

Vite+ owns Node.js runtime management independently from the selected pnpm binary.

## `vpt write-file package.json '{"name":"pnpm-runtime-management","private":true,"packageManager":"pnpm@11.1.0","devEngines":{"runtime":{"name":"node","version":"20.18.0","onFail":"download"}}}
'`


## `vpt write-file $VP_HOME/js_runtime/node/20.18.0/bin/node '#'\!'/bin/sh
'`


## `vpt chmod +x $VP_HOME/js_runtime/node/20.18.0/bin/node`


## `vpt chmod +x system-bin/pnpm`


## `vp env on node`


## `vp env off pnpm`


## `PATH=${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH} PNPM_CONFIG_RUNTIME=from-user pnpm install`

direct system-first pnpm disables its duplicate Node.js runtime

```
PNPM_CONFIG_RUNTIME=false
```

## `PATH=${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH} PNPM_CONFIG_RUNTIME=from-user vp install`

pnpm-backed vp install applies the same system-first policy

```
VITE+ - The Unified Toolchain for the Web

PNPM_CONFIG_RUNTIME=false
```

## `vpt write-file $VP_HOME/package_manager/pnpm/11.1.0/pnpm/bin/pnpm '#'\!'/bin/sh
if [ "$1" = "--version" ]; then printf '\''11.1.0\n'\''; else printf '\''PNPM_CONFIG_RUNTIME=%s\n'\'' "${PNPM_CONFIG_RUNTIME-unset}"; fi
'`


## `vpt write-file $VP_HOME/package_manager/pnpm/11.1.0/pnpm/bin/pnpx '#'\!'/bin/sh
printf '\''PNPM_CONFIG_RUNTIME=%s\n'\'' "${PNPM_CONFIG_RUNTIME-unset}"
'`


## `vpt chmod +x $VP_HOME/package_manager/pnpm/11.1.0/pnpm/bin/pnpm`


## `vpt chmod +x $VP_HOME/package_manager/pnpm/11.1.0/pnpm/bin/pnpx`


## `vpt mkdir other`


## `vpt write-file other/package.json '{"name":"other","private":true,"devEngines":{"runtime":{"name":"deno","version":"2.0.0","onFail":"download"}}}
'`


## `vpt mkdir child`


## `vp env on pnpm`


## `PNPM_CONFIG_RUNTIME=from-user pnpm install`

direct managed pnpm disables its duplicate Node.js runtime

```
PNPM_CONFIG_RUNTIME=false
```

## `PNPM_CONFIG_RUNTIME=from-user pnpx package`

the pnpx alias receives the same child-only override

```
PNPM_CONFIG_RUNTIME=false
```

## `PNPM_CONFIG_RUNTIME=from-user pnpx package --dir other`

pnpx forwards --dir to the downloaded command without changing runtime ownership

```
PNPM_CONFIG_RUNTIME=false
```

## `PNPM_CONFIG_RUNTIME=from-user pnpm exec package --dir other`

pnpm exec forwards --dir after the command without changing runtime ownership

```
PNPM_CONFIG_RUNTIME=false
```

## `PNPM_CONFIG_RUNTIME=from-user pnpm runtime set deno 2`

an explicit runtime command keeps pnpm runtime management enabled

```
PNPM_CONFIG_RUNTIME=from-user
```

## `PNPM_CONFIG_RUNTIME=from-user pnpm add bun@runtime:1.2.0`

an explicit runtime dependency keeps pnpm runtime management enabled

```
PNPM_CONFIG_RUNTIME=from-user
```

## `PNPM_CONFIG_RUNTIME=from-user vp install`

pnpm-backed vp install applies the same managed-pnpm policy

```
VITE+ - The Unified Toolchain for the Web

PNPM_CONFIG_RUNTIME=false
```

## `cd child && PNPM_CONFIG_RUNTIME=from-user vp install`

vp install from a child directory uses the parent package's managed Node.js

```
VITE+ - The Unified Toolchain for the Web

PNPM_CONFIG_RUNTIME=false
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# pnpm_runtime_preserved_for_conflicting_node_versions

pnpm keeps runtime ownership when Vite+ selects a different Node.js version.

## `vpt write-file package.json '{"name":"pnpm-runtime-management","private":true,"packageManager":"pnpm@11.1.0","devEngines":{"runtime":{"name":"node","version":"22.11.0","onFail":"download"}}}
'`


## `vpt write-file .node-version '20.18.0
'`


## `vpt write-file $VP_HOME/js_runtime/node/20.18.0/bin/node '#'\!'/bin/sh
'`


## `vpt chmod +x $VP_HOME/js_runtime/node/20.18.0/bin/node`


## `vpt chmod +x system-bin/pnpm`


## `vp env on node`


## `vp env off pnpm`


## `PATH=${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH} PNPM_CONFIG_RUNTIME=from-user pnpm install`

direct pnpm preserves the conflicting Node.js runtime

```
PNPM_CONFIG_RUNTIME=from-user
```

## `PATH=${VP_HOME}/bin${PATH_SEPARATOR}${workspace}/system-bin${PATH_SEPARATOR}${PATH} PNPM_CONFIG_RUNTIME=from-user vp install`

vp install preserves the same conflicting runtime

```
VITE+ - The Unified Toolchain for the Web

warning: Node.js version 20.18.0 (from .node-version) does not satisfy devEngines.runtime constraint '22.11.0'
PNPM_CONFIG_RUNTIME=from-user
```
Loading
Loading