From 30f1ec7fe3809b31e333b1701e1eda9af9d7f692 Mon Sep 17 00:00:00 2001 From: Vadym Vasylyshyn <51933329+vadyvas@users.noreply.github.com> Date: Fri, 31 Jul 2026 13:26:04 +0300 Subject: [PATCH 1/3] docs(core): document skipPluginEval option in README --- packages/core/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/core/README.md b/packages/core/README.md index 86de570c5f..a0b9268295 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -177,9 +177,14 @@ async function loadConfig(options?: { configPath?: string; // allows to add custom `extends` instead of the one from the config file customExtends?: string[]; + // whether to resolve plugin paths without importing the plugin code + skipPluginEval?: boolean; }): Promise; ``` +With `skipPluginEval`, `config.plugins` contains only the absolute paths of the referenced plugins, so use it to find out which plugin files a config points to without running their code. +Note that `extends` entries referencing a plugin preset, such as `my-plugin/config-name`, throw an error in this mode; built-in presets, such as `recommended`, still work. + ### `lintConfig` Lint a configuration file to validate its structure and rules. From 61d471bdcaeb724f26c5730a44e96a71286bde86 Mon Sep 17 00:00:00 2001 From: Vadym Vasylyshyn <51933329+vadyvas@users.noreply.github.com> Date: Fri, 31 Jul 2026 13:30:38 +0300 Subject: [PATCH 2/3] docs(core): update Readme --- packages/core/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/README.md b/packages/core/README.md index a0b9268295..7d9fd1e187 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -183,7 +183,7 @@ async function loadConfig(options?: { ``` With `skipPluginEval`, `config.plugins` contains only the absolute paths of the referenced plugins, so use it to find out which plugin files a config points to without running their code. -Note that `extends` entries referencing a plugin preset, such as `my-plugin/config-name`, throw an error in this mode; built-in presets, such as `recommended`, still work. +In this mode `extends` is kept as authored, because presets live in plugin code: neither plugin nor built-in presets are resolved, and the root config isn't merged into the `apis` entries. ### `lintConfig` From b459e61352a2f1a78f704f66335c19d9cab5193d Mon Sep 17 00:00:00 2001 From: Vadym Vasylyshyn <51933329+vadyvas@users.noreply.github.com> Date: Fri, 31 Jul 2026 14:41:42 +0300 Subject: [PATCH 3/3] docs: update skipPluginEval description --- packages/core/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/README.md b/packages/core/README.md index 7d9fd1e187..6a77f7db94 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -182,8 +182,8 @@ async function loadConfig(options?: { }): Promise; ``` -With `skipPluginEval`, `config.plugins` contains only the absolute paths of the referenced plugins, so use it to find out which plugin files a config points to without running their code. -In this mode `extends` is kept as authored, because presets live in plugin code: neither plugin nor built-in presets are resolved, and the root config isn't merged into the `apis` entries. +Use `skipPluginEval` to read a config without executing any plugin code, for example when the plugins come from an untrusted source. +The returned config is incomplete: rules and decorators from plugins aren't loaded, and `extends` isn't resolved, so the presets it lists are ignored. ### `lintConfig`