File: /home/dnlightw-124/dn.lightweb.kr/tailwind.config.js
import defaultTheme from 'tailwindcss/defaultTheme';
const colors = require('tailwindcss/colors')
import fs from 'fs';
import path from 'path';
// Base Tailwind configuration
const baseConfig = {
content: [
'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',
'./vendor/laravel/jetstream/**/*.blade.php',
'./storage/framework/views/*.php',
'./resources/views/**/*.blade.php',
'./app/Settings/resources/views/**/*.blade.php',
'./vendor/orchid/platform/resources/views/**/**/*.blade.php',
'./app/Settings/resources/js/**/**/*.vue',
'./themes/**/views/**/*.blade.php',
'./themes/**/**/*.vue',
],
theme: {
extend: {
fontFamily: {
sans: ['Pretendard', ...defaultTheme.fontFamily.sans],
},
colors: {
...colors
},
},
},
plugins: [
require('@tailwindcss/forms'),
require('@tailwindcss/typography'),
],
};
// Function to recursively search for "tailwind.config.js" files inside "themes" directory
function findTailwindConfigs(dir) {
const results = [];
const items = fs.readdirSync(dir);
for (const item of items) {
const fullPath = path.join(dir, item);
const stat = fs.statSync(fullPath);
if (stat.isDirectory()) {
results.push(...findTailwindConfigs(fullPath));
} else if (item === 'tailwind.config.js') {
results.push(fullPath);
}
}
return results;
}
// Function to merge configurations
function mergeTailwindConfigs(baseConfig, customConfigPath) {
const customConfig = require(customConfigPath); // Import the custom tailwind.config.js
return {
...baseConfig,
theme: {
...baseConfig.theme,
...customConfig.theme,
container: {
...baseConfig.theme?.container,
...customConfig.theme?.container,
},
fontFamily: {
...baseConfig.theme.fontFamily,
...customConfig.theme?.fontFamily,
},
extend: {
...baseConfig.theme.extend,
colors: {
...baseConfig.theme.extend.colors,
...(customConfig.theme?.extend?.colors || {}),
},
},
},
plugins: [
...(baseConfig.plugins || []),
...(customConfig.plugins || []),
],
content: baseConfig.content.concat(customConfig.content || []),
};
}
// Directory to search for configuration files
const themesDir = path.resolve(__dirname, 'themes');
// Find all tailwind.config.js files in themes directory
const foundConfigs = findTailwindConfigs(themesDir);
// Merge base config with each found tailwind.config.js
let finalConfig = {...baseConfig};
for (const configPath of foundConfigs) {
finalConfig = mergeTailwindConfigs(finalConfig, configPath);
}
export default finalConfig;