@ngzard/ui
Version:
An alternative to shadcn/ui for angular
73 lines • 2.07 kB
JavaScript
import { access, readFile } from 'node:fs/promises';
import * as path from 'path';
import { z } from 'zod';
import { logger } from '../utils/logger.js';
async function pathExists(filePath) {
try {
await access(filePath);
return true;
}
catch {
return false;
}
}
async function readJson(filePath) {
const content = await readFile(filePath, 'utf-8');
return JSON.parse(content);
}
const configSchema = z.object({
$schema: z.string().optional(),
style: z.enum(['css']).default('css'),
packageManager: z.enum(['npm', 'yarn', 'pnpm', 'bun']).default('npm'),
tailwind: z
.object({
css: z.string().default('src/styles.css'),
baseColor: z.string().default('slate'),
cssVariables: z.boolean().default(true),
})
.default({}),
aliases: z
.object({
components: z.string().default('src/app/shared/components'),
utils: z.string().default('src/app/shared/utils'),
})
.default({}),
});
export const DEFAULT_CONFIG = {
style: 'css',
packageManager: 'npm',
tailwind: {
css: 'src/styles.css',
baseColor: 'slate',
cssVariables: true,
},
aliases: {
components: 'src/app/shared/components',
utils: 'src/app/shared/utils',
},
};
export async function getConfig(cwd) {
const configPath = path.resolve(cwd, 'components.json');
if (!(await pathExists(configPath))) {
return null;
}
try {
const configJson = await readJson(configPath);
return configSchema.parse(configJson);
}
catch (error) {
logger.error('Invalid configuration file');
throw error;
}
}
export async function resolveConfigPaths(cwd, config) {
return {
...config,
resolvedPaths: {
tailwindCss: path.resolve(cwd, config.tailwind.css),
components: path.resolve(cwd, config.aliases.components),
utils: path.resolve(cwd, config.aliases.utils),
},
};
}
//# sourceMappingURL=config.js.map