flowbite-react
Version:
Official React components built for Flowbite and Tailwind CSS
62 lines (59 loc) • 2.32 kB
JavaScript
import fs__default from 'fs/promises';
import { automaticClassGenerationMessage, excludeDirs, allowedExtensions, classListFilePath } from '../consts.js';
import { buildClassList } from '../utils/build-class-list.js';
import { createInitLogger } from '../utils/create-init-logger.js';
import { extractComponentImports } from '../utils/extract-component-imports.js';
import { findFiles } from '../utils/find-files.js';
import { getConfig } from '../utils/get-config.js';
import { setupInit } from './setup-init.js';
import { setupOutputDirectory } from './setup-output-directory.js';
import { setupTailwind } from './setup-tailwind.js';
async function build() {
await setupOutputDirectory();
try {
const config = await getConfig();
await setupInit(config);
await setupTailwind();
const initLogger = createInitLogger(config);
const importedComponents = [];
if (config.components.length) {
console.warn(automaticClassGenerationMessage);
if (initLogger.isCustomConfig) {
const files = await findFiles({
patterns: allowedExtensions.map((ext) => `**/*${ext}`),
excludeDirs
});
for (const file of files) {
const content = await fs__default.readFile(file, "utf-8");
initLogger.check(file, content);
}
}
} else {
const files = await findFiles({
patterns: allowedExtensions.map((ext) => `**/*${ext}`),
excludeDirs
});
for (const file of files) {
const content = await fs__default.readFile(file, "utf-8");
const components = extractComponentImports(content);
initLogger.check(file, content);
if (components.length) {
importedComponents.push(...components);
}
}
}
initLogger.log();
const classList = buildClassList({
components: config.components.length ? config.components : [...new Set(importedComponents)],
dark: config.dark,
prefix: config.prefix,
version: config.version
});
console.log(`Generating ${classListFilePath} file...`);
await fs__default.writeFile(classListFilePath, JSON.stringify(classList, null, 2));
} catch (error) {
console.error(`Failed to generate ${classListFilePath}:`, error);
}
}
export { build };
//# sourceMappingURL=build.js.map