From 6938f598654d3d73850b2afcc8ad24e13e913f3e Mon Sep 17 00:00:00 2001 From: Kelly Mears Date: Mon, 19 Aug 2024 03:00:06 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=A9=B9=20fix(patch):=20fix=20#2639?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bud-tailwindcss/src/extension/index.ts | 6 ++- .../bud-tailwindcss/src/extension/options.ts | 44 +++++++++++-------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/sources/@roots/bud-tailwindcss/src/extension/index.ts b/sources/@roots/bud-tailwindcss/src/extension/index.ts index 097451b12d..a4d6ea5d58 100644 --- a/sources/@roots/bud-tailwindcss/src/extension/index.ts +++ b/sources/@roots/bud-tailwindcss/src/extension/index.ts @@ -79,7 +79,11 @@ class BudTailwindCss extends BudTailwindOptionsApi { */ @bind public override async configAfter(bud: Bud) { - bud.postcss.setPluginOptions(`tailwindcss`, this.resolveConfig()) + bud.postcss.setPluginOptions( + `tailwindcss`, + // @ts-ignore + this.editedConfig ? this.resolveConfig() : this.configPath, + ) } /** diff --git a/sources/@roots/bud-tailwindcss/src/extension/options.ts b/sources/@roots/bud-tailwindcss/src/extension/options.ts index 9b4f377106..a57ad257d9 100644 --- a/sources/@roots/bud-tailwindcss/src/extension/options.ts +++ b/sources/@roots/bud-tailwindcss/src/extension/options.ts @@ -55,7 +55,6 @@ type BudTailwindOptionsPublicInterface = { ], })), configPath: undefined, - resolvedConfig: undefined, }) class BudTailwindOptionsApi extends Extension @@ -65,23 +64,20 @@ class BudTailwindOptionsApi * Tailwind config */ public declare config: BudTailwindOptionsPublicInterface[`config`] + public declare getConfig: BudTailwindOptionsPublicInterface[`getConfig`] + public declare setConfig: BudTailwindOptionsPublicInterface[`setConfig`] /** * Tailwind config path */ public declare configPath: BudTailwindOptionsPublicInterface[`configPath`] - public declare getConfig: BudTailwindOptionsPublicInterface[`getConfig`] - public declare getConfigPath: BudTailwindOptionsPublicInterface[`getConfigPath`] - public declare getResolvedConfig: BudTailwindOptionsPublicInterface[`getResolvedConfig`] + public declare setConfigPath: BudTailwindOptionsPublicInterface[`setConfigPath`] + /** - * Tailwind config (resolved) + * Flag if config has been edited */ - public declare resolvedConfig: BudTailwindOptionsPublicInterface[`resolvedConfig`] - - public declare setConfig: BudTailwindOptionsPublicInterface[`setConfig`] - public declare setConfigPath: BudTailwindOptionsPublicInterface[`setConfigPath`] - public declare setResolvedConfig: BudTailwindOptionsPublicInterface[`setResolvedConfig`] + public editedConfig: boolean = false @bind public extendTheme< @@ -89,6 +85,8 @@ class BudTailwindOptionsApi V extends Partial, VK extends Partial[K], >(...params: [K, VK] | [V]) { + this.editedConfig = true + if (params.length === 1) { const [value] = params @@ -143,25 +141,31 @@ class BudTailwindOptionsApi > | boolean = true, ) { - const makeStaticModule = (key: `${keyof ThemeConfig & string}`) => { + const makeStaticModule = ( + resolvedConfig: Options[`resolvedConfig`], + key: `${keyof Options[`resolvedConfig`][`theme`]}`, + ) => { this.logger.log(`@tailwind/${key}`, `generating module`) - const value = get(this.resolvedConfig.theme, key) + const value = get(resolvedConfig.theme, key) return `export default ${JSON.stringify(value)};` } this.app.hooks.action(`config.after`, async bud => { - this.resolveConfig() + const config = this.resolveConfig() const importableKeys = Array.isArray(imports) ? imports - : Object.keys(this.resolvedConfig.theme) + : Object.keys(config.theme) const modules = importableKeys.reduce( (acc, key) => ({ ...acc, [bud.path(`@src`, `__bud`, `@tailwind`, `${key}.mjs`)]: - makeStaticModule(key as `${keyof ThemeConfig & string}`), + makeStaticModule( + config, + key as `${keyof Options[`resolvedConfig`][`theme`]}`, + ), }), {}, ) @@ -203,8 +207,7 @@ class BudTailwindOptionsApi @bind public resolveConfig() { - this.setResolvedConfig({...resolveConfig({...this.config})}) - return this.resolvedConfig + return {...resolveConfig({...this.config})} } /** @@ -245,12 +248,16 @@ class BudTailwindOptionsApi @bind public setContent(content: Config[`content`]) { + this.editedConfig = true + this.setConfig((config = {content: []}) => ({...config, content})) return this } @bind public setPlugins(plugins: Config[`plugins`]) { + this.editedConfig = true + this.setConfig((config = {content: []}) => ({ ...config, plugins, @@ -268,6 +275,8 @@ class BudTailwindOptionsApi | ((theme: Partial[K]) => Partial[K]) | Partial[K], >(...params: [K, VK] | [V]) { + this.editedConfig = true + if (params.length === 1) { const [value] = params this.setConfig((config = {content: []}) => ({ @@ -296,7 +305,6 @@ class BudTailwindOptionsApi config.path && this.setConfigPath(config.path) config.module && this.setConfig({...(await config.module())}) - this.resolveConfig() } catch (error) { this.logger.error(error) }