|
import fs from 'fs' |
|
import path from 'path' |
|
|
|
const defaultConfigFiles = [ |
|
'./tailwind.config.js', |
|
'./tailwind.config.cjs', |
|
'./tailwind.config.mjs', |
|
'./tailwind.config.ts', |
|
] |
|
|
|
function isObject(value) { |
|
return typeof value === 'object' && value !== null |
|
} |
|
|
|
function isEmpty(obj) { |
|
return Object.keys(obj).length === 0 |
|
} |
|
|
|
function isString(value) { |
|
return typeof value === 'string' || value instanceof String |
|
} |
|
|
|
export default function resolveConfigPath(pathOrConfig) { |
|
|
|
if (isObject(pathOrConfig) && pathOrConfig.config === undefined && !isEmpty(pathOrConfig)) { |
|
return null |
|
} |
|
|
|
|
|
if ( |
|
isObject(pathOrConfig) && |
|
pathOrConfig.config !== undefined && |
|
isString(pathOrConfig.config) |
|
) { |
|
return path.resolve(pathOrConfig.config) |
|
} |
|
|
|
|
|
if ( |
|
isObject(pathOrConfig) && |
|
pathOrConfig.config !== undefined && |
|
isObject(pathOrConfig.config) |
|
) { |
|
return null |
|
} |
|
|
|
|
|
if (isString(pathOrConfig)) { |
|
return path.resolve(pathOrConfig) |
|
} |
|
|
|
|
|
return resolveDefaultConfigPath() |
|
} |
|
|
|
export function resolveDefaultConfigPath() { |
|
for (const configFile of defaultConfigFiles) { |
|
try { |
|
const configPath = path.resolve(configFile) |
|
fs.accessSync(configPath) |
|
return configPath |
|
} catch (err) {} |
|
} |
|
|
|
return null |
|
} |
|
|