From 0bf8495b96d072d9c9cc5736010e3e076765deff Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Fri, 2 Aug 2019 08:31:46 -0400 Subject: [PATCH] Support passing config object under config key --- __tests__/customConfig.test.js | 38 ++++++++++++++++++++++++++++++++++ src/index.js | 16 ++++++++++++-- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/__tests__/customConfig.test.js b/__tests__/customConfig.test.js index 2d674713d..5c3f3e7d2 100644 --- a/__tests__/customConfig.test.js +++ b/__tests__/customConfig.test.js @@ -95,6 +95,44 @@ test('custom config path can be passed using `config` property in an object', () }) }) +test('custom config can be passed under the `config` property', () => { + return postcss([ + tailwind({ + config: { + theme: { + screens: { + mobile: '400px', + }, + }, + }, + }), + ]) + .process( + ` + @responsive { + .foo { + color: blue; + } + } + `, + { from: undefined } + ) + .then(result => { + const expected = ` + .foo { + color: blue; + } + @media (min-width: 400px) { + .mobile\\:foo { + color: blue; + } + } + ` + + expect(result.css).toMatchCss(expected) + }) +}) + test('tailwind.config.js is picked up by default', () => { return inTempDirectory(() => { fs.writeFileSync( diff --git a/src/index.js b/src/index.js index 95af61861..11f1aba46 100644 --- a/src/index.js +++ b/src/index.js @@ -13,18 +13,27 @@ import { defaultConfigFile } from './constants' import defaultConfig from '../stubs/defaultConfig.stub.js' function resolveConfigPath(filePath) { + // require('tailwindcss')({ theme: ..., variants: ... }) if (_.isObject(filePath) && !_.has(filePath, 'config') && !_.isEmpty(filePath)) { return undefined } - if (_.isObject(filePath) && _.has(filePath, 'config')) { + // require('tailwindcss')({ config: 'custom-config.js' }) + if (_.isObject(filePath) && _.has(filePath, 'config') && _.isString(filePath.config)) { return path.resolve(filePath.config) } + // require('tailwindcss')({ config: { theme: ..., variants: ... } }) + if (_.isObject(filePath) && _.has(filePath, 'config') && _.isObject(filePath.config)) { + undefined + } + + // require('tailwindcss')('custom-config.js') if (_.isString(filePath)) { return path.resolve(filePath) } + // require('tailwindcss') try { const defaultConfigPath = path.resolve(defaultConfigFile) fs.accessSync(defaultConfigPath) @@ -43,7 +52,10 @@ const getConfigFunction = config => () => { delete require.cache[require.resolve(config)] } - return resolveConfig([_.isObject(config) ? config : require(config), defaultConfig]) + return resolveConfig([ + _.isObject(config) ? _.get(config, 'config', config) : require(config), + defaultConfig, + ]) } const plugin = postcss.plugin('tailwind', config => {