From f7bd33b04208f5dd8f4e575e49e91aa069c4c3da Mon Sep 17 00:00:00 2001 From: Shub Date: Fri, 18 Nov 2022 08:20:01 +0530 Subject: [PATCH] [#6452] feat: enable passing plugin functions as config value --- lib/augmentConfig.js | 16 ++++++++++++++-- types/stylelint/index.d.ts | 5 ++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/augmentConfig.js b/lib/augmentConfig.js index 636ffde31f..aa9208f551 100644 --- a/lib/augmentConfig.js +++ b/lib/augmentConfig.js @@ -150,7 +150,13 @@ function absolutizePaths(config, configDir, cwd) { } if (config.plugins) { - config.plugins = [config.plugins].flat().map((lookup) => getModulePath(configDir, lookup, cwd)); + config.plugins = [config.plugins].flat().map((lookup) => { + if (typeof lookup === 'string') { + return getModulePath(configDir, lookup, cwd); + } + + return lookup; + }); } if (config.processors) { @@ -322,7 +328,13 @@ function addPluginFunctions(config) { const pluginFunctions = {}; for (const pluginLookup of normalizedPlugins) { - let pluginImport = require(pluginLookup); + let pluginImport; + + if (typeof pluginLookup === 'string') { + pluginImport = require(pluginLookup); + } else { + pluginImport = pluginLookup; + } // Handle either ES6 or CommonJS modules pluginImport = pluginImport.default || pluginImport; diff --git a/types/stylelint/index.d.ts b/types/stylelint/index.d.ts index 0e8b02ada8..91460ceb39 100644 --- a/types/stylelint/index.d.ts +++ b/types/stylelint/index.d.ts @@ -7,7 +7,10 @@ declare module 'stylelint' { export type Severity = 'warning' | 'error'; export type ConfigExtends = string | string[]; - export type ConfigPlugins = string | string[]; + export type PluginImportType = + | { default?: { ruleName: string; rule: Rule } } + | { ruleName: string; rule: Rule }; + export type ConfigPlugins = string | string[] | PluginImportType | PluginImportType[]; export type ConfigProcessor = string | [string, Object]; export type ConfigProcessors = string | ConfigProcessor[]; export type ConfigIgnoreFiles = string | string[];