-
+
diff --git a/packages/vite/src/app/pages/home.vue b/packages/vite/src/app/pages/home.vue
new file mode 100644
index 00000000..6452f304
--- /dev/null
+++ b/packages/vite/src/app/pages/home.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.label }}
+
+
+ {{ row.value }}
+
+
+
+
+
+
+
diff --git a/packages/vite/src/app/pages/index.vue b/packages/vite/src/app/pages/index.vue
index ce65592a..4ec001bf 100644
--- a/packages/vite/src/app/pages/index.vue
+++ b/packages/vite/src/app/pages/index.vue
@@ -1,7 +1,9 @@
+
+
-
-
- Vite DevTools
-
-
+
diff --git a/packages/vite/src/app/plugins/floating-vue.ts b/packages/vite/src/app/plugins/floating-vue.ts
new file mode 100644
index 00000000..f7e80c47
--- /dev/null
+++ b/packages/vite/src/app/plugins/floating-vue.ts
@@ -0,0 +1,8 @@
+import { defineNuxtPlugin } from '#app/nuxt'
+import FloatingVue from 'floating-vue'
+
+export default defineNuxtPlugin((nuxtApp) => {
+ nuxtApp.vueApp.use(FloatingVue, {
+ overflowPadding: 20,
+ })
+})
diff --git a/packages/vite/src/node/rpc/functions/hi.ts b/packages/vite/src/node/rpc/functions/hi.ts
deleted file mode 100644
index 4b1df426..00000000
--- a/packages/vite/src/node/rpc/functions/hi.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { defineRpcFunction } from '@vitejs/devtools-kit'
-
-export const viteHi = defineRpcFunction({
- name: 'vite:hi',
- type: 'query',
- setup: (context) => {
- return {
- handler: async () => {
- return {
- message: 'Hi from server.',
- cwd: context.cwd,
- timestamp: Date.now(),
- }
- },
- }
- },
-})
diff --git a/packages/vite/src/node/rpc/functions/vite-env-info.ts b/packages/vite/src/node/rpc/functions/vite-env-info.ts
new file mode 100644
index 00000000..59db735b
--- /dev/null
+++ b/packages/vite/src/node/rpc/functions/vite-env-info.ts
@@ -0,0 +1,36 @@
+import { defineRpcFunction } from '@vitejs/devtools-kit'
+
+export const viteEnvInfo = defineRpcFunction({
+ name: 'vite:env-info',
+ type: 'query',
+ setup: () => {
+ return {
+ handler: async () => {
+ const { default: { helpers } } = await import('envinfo')
+
+ const [cpu, os, memory, node, bun, npm, pnpm, yarn] = await Promise.all([
+ helpers.getCPUInfo().then(([,res]) => res),
+ helpers.getOSInfo().then(([,res]) => res),
+ helpers.getMemoryInfo().then(([,res]) => res),
+ helpers.getNodeInfo().then(([,res]) => res),
+ // @ts-expect-error missing types
+ helpers.getbunInfo().then(([,res]) => res),
+ helpers.getnpmInfo().then(([,res]) => res),
+ helpers.getpnpmInfo().then(([,res]) => res),
+ helpers.getYarnInfo().then(([,res]) => res),
+ ])
+
+ return {
+ cpu,
+ os,
+ memory,
+ node,
+ bun,
+ npm,
+ pnpm,
+ yarn,
+ }
+ },
+ }
+ },
+})
diff --git a/packages/vite/src/node/rpc/functions/vite-meta-info.ts b/packages/vite/src/node/rpc/functions/vite-meta-info.ts
new file mode 100644
index 00000000..dcba5d21
--- /dev/null
+++ b/packages/vite/src/node/rpc/functions/vite-meta-info.ts
@@ -0,0 +1,19 @@
+import { defineRpcFunction } from '@vitejs/devtools-kit'
+
+export const viteMetaInfo = defineRpcFunction({
+ name: 'vite:meta-info',
+ type: 'query',
+ setup: (context) => {
+ return {
+ handler: async () => {
+ const { root, base, plugins } = context.viteConfig
+
+ return {
+ root,
+ base,
+ plugins: plugins.map(p => p.name),
+ }
+ },
+ }
+ },
+})
diff --git a/packages/vite/src/node/rpc/index.ts b/packages/vite/src/node/rpc/index.ts
index 7f08436b..b68ece44 100644
--- a/packages/vite/src/node/rpc/index.ts
+++ b/packages/vite/src/node/rpc/index.ts
@@ -1,9 +1,11 @@
import type { RpcDefinitionsToFunctions } from '@vitejs/devtools-kit'
-import { viteHi } from './functions/hi'
+import { viteEnvInfo } from './functions/vite-env-info'
+import { viteMetaInfo } from './functions/vite-meta-info'
import '@vitejs/devtools-kit'
export const rpcFunctions = [
- viteHi,
+ viteMetaInfo,
+ viteEnvInfo,
] as const
export type ServerFunctions = RpcDefinitionsToFunctions
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3a229334..a2ca415b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -52,6 +52,9 @@ catalogs:
diff:
specifier: ^8.0.3
version: 8.0.3
+ envinfo:
+ specifier: ^7.21.0
+ version: 7.21.0
get-port-please:
specifier: ^3.2.0
version: 3.2.0
@@ -290,6 +293,9 @@ catalogs:
'@iconify-json/logos':
specifier: ^1.2.10
version: 1.2.10
+ '@iconify-json/material-icon-theme':
+ specifier: ^1.2.54
+ version: 1.2.54
'@iconify-json/octicon':
specifier: ^1.2.21
version: 1.2.21
@@ -305,6 +311,9 @@ catalogs:
'@iconify-json/svg-spinners':
specifier: ^1.2.4
version: 1.2.4
+ '@iconify-json/system-uicons':
+ specifier: ^1.2.4
+ version: 1.2.4
'@iconify-json/tabler':
specifier: ^1.2.31
version: 1.2.31
@@ -354,6 +363,9 @@ catalogs:
'@types/diff':
specifier: ^8.0.0
version: 8.0.0
+ '@types/envinfo':
+ specifier: ^7.8.4
+ version: 7.8.4
'@types/react':
specifier: ^19.2.14
version: 19.2.14
@@ -419,6 +431,9 @@ importers:
'@iconify-json/logos':
specifier: catalog:icons
version: 1.2.10
+ '@iconify-json/material-icon-theme':
+ specifier: catalog:icons
+ version: 1.2.54
'@iconify-json/octicon':
specifier: catalog:icons
version: 1.2.21
@@ -434,6 +449,9 @@ importers:
'@iconify-json/svg-spinners':
specifier: catalog:icons
version: 1.2.4
+ '@iconify-json/system-uicons':
+ specifier: catalog:icons
+ version: 1.2.4
'@iconify-json/tabler':
specifier: catalog:icons
version: 1.2.31
@@ -1024,6 +1042,9 @@ importers:
birpc:
specifier: catalog:deps
version: 4.0.0
+ envinfo:
+ specifier: catalog:deps
+ version: 7.21.0
get-port-please:
specifier: catalog:deps
version: 3.2.0
@@ -1046,6 +1067,9 @@ importers:
specifier: catalog:deps
version: 8.19.0
devDependencies:
+ '@types/envinfo':
+ specifier: catalog:types
+ version: 7.8.4
'@unocss/nuxt':
specifier: catalog:build
version: 66.6.6(magicast@0.5.2)(vite@8.0.0(@types/node@25.0.3)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(webpack@5.104.1(esbuild@0.27.4))
@@ -1670,6 +1694,9 @@ packages:
'@iconify-json/logos@1.2.10':
resolution: {integrity: sha512-qxaXKJ6fu8jzTMPQdHtNxlfx6tBQ0jXRbHZIYy5Ilh8Lx9US9FsAdzZWUR8MXV8PnWTKGDFO4ZZee9VwerCyMA==}
+ '@iconify-json/material-icon-theme@1.2.54':
+ resolution: {integrity: sha512-m5GpLcWICmtaLntgaSbQBWYzzScp2wQIBj0I/9ak2xUFXWxQUws42mZGWRA5W5e1Nn7DsyyMYVBgisnnCQSlhA==}
+
'@iconify-json/octicon@1.2.21':
resolution: {integrity: sha512-iMW8IT7suHRKVcHnci9wHKY79LU9mQ4rCAcVgKQQsI5SHoBi0r6z0leOXrI/oRCGJDiJDy9cLqweF3C5wSnm0A==}
@@ -1685,6 +1712,9 @@ packages:
'@iconify-json/svg-spinners@1.2.4':
resolution: {integrity: sha512-ayn0pogFPwJA1WFZpDnoq9/hjDxN+keeCMyThaX4d3gSJ3y0mdKUxIA/b1YXWGtY9wVtZmxwcvOIeEieG4+JNg==}
+ '@iconify-json/system-uicons@1.2.4':
+ resolution: {integrity: sha512-9WB9dmEm+TRCXI5Ml2IY8zQAPZES8euKxY0VOaf8D6E6ZaEr7ztO6DChMlGg7qWECs3m3FjFUqNgBx8ZpB+djw==}
+
'@iconify-json/tabler@1.2.31':
resolution: {integrity: sha512-Jfcw5TpGhfKKWyz1dGk7e79zIgDmpMKNYL0bjt17sURBPifAxowQcWAzcEhuiWU7FGXUM2NT6UhvACFZp7Hnjw==}
@@ -3236,6 +3266,9 @@ packages:
resolution: {integrity: sha512-o7jqJM04gfaYrdCecCVMbZhNdG6T1MHg/oQoRFdERLV+4d+V7FijhiEAbFu0Usww84Yijk9yH58U4Jk4HbtzZw==}
deprecated: This is a stub types definition. diff provides its own type definitions, so you do not need this installed.
+ '@types/envinfo@7.8.4':
+ resolution: {integrity: sha512-K5WaRgSlqjc408IyPbxOFnz7rVG9E8ELhj7XR3Ncui15EgeyIXTcCfmwrRnU4uEOCJQhzZRAQurYznEEc1dD2g==}
+
'@types/eslint-scope@3.7.7':
resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==}
@@ -4862,6 +4895,11 @@ packages:
resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}
engines: {node: '>=0.12'}
+ envinfo@7.21.0:
+ resolution: {integrity: sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==}
+ engines: {node: '>=4'}
+ hasBin: true
+
error-ex@1.3.4:
resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==}
@@ -8707,6 +8745,10 @@ snapshots:
dependencies:
'@iconify/types': 2.0.0
+ '@iconify-json/material-icon-theme@1.2.54':
+ dependencies:
+ '@iconify/types': 2.0.0
+
'@iconify-json/octicon@1.2.21':
dependencies:
'@iconify/types': 2.0.0
@@ -8727,6 +8769,10 @@ snapshots:
dependencies:
'@iconify/types': 2.0.0
+ '@iconify-json/system-uicons@1.2.4':
+ dependencies:
+ '@iconify/types': 2.0.0
+
'@iconify-json/tabler@1.2.31':
dependencies:
'@iconify/types': 2.0.0
@@ -10375,6 +10421,8 @@ snapshots:
dependencies:
diff: 8.0.3
+ '@types/envinfo@7.8.4': {}
+
'@types/eslint-scope@3.7.7':
dependencies:
'@types/eslint': 9.6.1
@@ -12341,6 +12389,8 @@ snapshots:
entities@7.0.1: {}
+ envinfo@7.21.0: {}
+
error-ex@1.3.4:
dependencies:
is-arrayish: 0.2.1
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index a9407a6e..193a2e5c 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -37,6 +37,7 @@ catalogs:
birpc: ^4.0.0
cac: ^7.0.0
diff: ^8.0.3
+ envinfo: ^7.21.0
get-port-please: ^3.2.0
h3: ^1.15.6
immer: ^11.1.4
@@ -121,11 +122,13 @@ catalogs:
'@iconify-json/fluent': ^1.2.40
'@iconify-json/fluent-emoji-flat': ^1.2.5
'@iconify-json/logos': ^1.2.10
+ '@iconify-json/material-icon-theme': ^1.2.54
'@iconify-json/octicon': ^1.2.21
'@iconify-json/ph': ^1.2.2
'@iconify-json/ri': ^1.2.10
'@iconify-json/simple-icons': ^1.2.73
'@iconify-json/svg-spinners': ^1.2.4
+ '@iconify-json/system-uicons': ^1.2.4
'@iconify-json/tabler': ^1.2.31
inlined:
'@antfu/utils': ^9.3.0
@@ -149,6 +152,7 @@ catalogs:
'@types/d3': ^7.4.3
'@types/d3-hierarchy': ^3.1.7
'@types/diff': ^8.0.0
+ '@types/envinfo': ^7.8.4
'@types/react': ^19.2.14
'@types/react-dom': ^19.2.3
'@types/split2': ^4.2.3