From a3c80d5d57f3af862d9e4df99aa6e48ce1352384 Mon Sep 17 00:00:00 2001 From: fengmk2 Date: Mon, 30 Mar 2026 11:58:50 +0000 Subject: [PATCH] Revert "fix(cli): fall back to NAPI when plugins are present in vite config (#1213)" (#1214) This reverts commit 785fac97ef3c23aa72cac0a6a80f3d1ef393fa3f. --- packages/cli/binding/src/cli.rs | 50 +++++++------------ .../vite-config-task-from-plugin/package.json | 4 -- .../vite-config-task-from-plugin/snap.txt | 5 -- .../vite-config-task-from-plugin/steps.json | 6 --- .../vite.config.ts | 20 -------- 5 files changed, 19 insertions(+), 66 deletions(-) delete mode 100644 packages/cli/snap-tests/vite-config-task-from-plugin/package.json delete mode 100644 packages/cli/snap-tests/vite-config-task-from-plugin/snap.txt delete mode 100644 packages/cli/snap-tests/vite-config-task-from-plugin/steps.json delete mode 100644 packages/cli/snap-tests/vite-config-task-from-plugin/vite.config.ts diff --git a/packages/cli/binding/src/cli.rs b/packages/cli/binding/src/cli.rs index b19a995ee6..beae924d1c 100644 --- a/packages/cli/binding/src/cli.rs +++ b/packages/cli/binding/src/cli.rs @@ -620,37 +620,25 @@ impl UserConfigLoader for VitePlusConfigLoader { ) -> anyhow::Result> { // Try static config extraction first (no JS runtime needed) let static_fields = vite_static_config::resolve_static_config(package_path); - - // If plugins are present, a plugin's config hook may add/modify the `run` - // field at runtime, so we must fall back to NAPI-based resolution which - // calls Vite's resolveConfig() and executes plugin hooks. - if static_fields.get("plugins").is_some() { - tracing::debug!( - "plugins detected for {}, falling back to NAPI to run config hooks", - package_path.as_path().display() - ); - } else { - // No plugins — static analysis results are trustworthy - match static_fields.get("run") { - Some(vite_static_config::FieldValue::Json(run_value)) => { - tracing::debug!( - "Using statically extracted run config for {}", - package_path.as_path().display() - ); - let run_config: UserRunConfig = serde_json::from_value(run_value)?; - return Ok(Some(run_config)); - } - Some(vite_static_config::FieldValue::NonStatic) => { - // `run` field exists (or may exist via a spread) — fall back to NAPI - tracing::debug!( - "run config is not statically analyzable for {}, falling back to NAPI", - package_path.as_path().display() - ); - } - None => { - // Config was analyzed successfully and `run` field is definitively absent - return Ok(None); - } + match static_fields.get("run") { + Some(vite_static_config::FieldValue::Json(run_value)) => { + tracing::debug!( + "Using statically extracted run config for {}", + package_path.as_path().display() + ); + let run_config: UserRunConfig = serde_json::from_value(run_value)?; + return Ok(Some(run_config)); + } + Some(vite_static_config::FieldValue::NonStatic) => { + // `run` field exists (or may exist via a spread) — fall back to NAPI + tracing::debug!( + "run config is not statically analyzable for {}, falling back to NAPI", + package_path.as_path().display() + ); + } + None => { + // Config was analyzed successfully and `run` field is definitively absent + return Ok(None); } } diff --git a/packages/cli/snap-tests/vite-config-task-from-plugin/package.json b/packages/cli/snap-tests/vite-config-task-from-plugin/package.json deleted file mode 100644 index 2e126e5e5d..0000000000 --- a/packages/cli/snap-tests/vite-config-task-from-plugin/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "vite-config-task-from-plugin-test", - "private": true -} diff --git a/packages/cli/snap-tests/vite-config-task-from-plugin/snap.txt b/packages/cli/snap-tests/vite-config-task-from-plugin/snap.txt deleted file mode 100644 index 667b3fd203..0000000000 --- a/packages/cli/snap-tests/vite-config-task-from-plugin/snap.txt +++ /dev/null @@ -1,5 +0,0 @@ -> # Test that tasks added by a plugin config hook are recognized by vp run -> vp run build:prod -$ echo 'build:prod from plugin config hook' ⊘ cache disabled -build:prod from plugin config hook - diff --git a/packages/cli/snap-tests/vite-config-task-from-plugin/steps.json b/packages/cli/snap-tests/vite-config-task-from-plugin/steps.json deleted file mode 100644 index 47c1b94e14..0000000000 --- a/packages/cli/snap-tests/vite-config-task-from-plugin/steps.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "commands": [ - "# Test that tasks added by a plugin config hook are recognized by vp run", - "vp run build:prod" - ] -} diff --git a/packages/cli/snap-tests/vite-config-task-from-plugin/vite.config.ts b/packages/cli/snap-tests/vite-config-task-from-plugin/vite.config.ts deleted file mode 100644 index 339878eca1..0000000000 --- a/packages/cli/snap-tests/vite-config-task-from-plugin/vite.config.ts +++ /dev/null @@ -1,20 +0,0 @@ -function myTaskPlugin() { - return { - name: 'my-task-plugin', - config() { - return { - run: { - tasks: { - 'build:prod': { - command: "echo 'build:prod from plugin config hook'", - }, - }, - }, - }; - }, - }; -} - -export default { - plugins: [myTaskPlugin()], -};