dynamate-design-to-code
Version:
A powerful tool for converting Figma designs into high-quality, production-ready code with built-in best practices and customizable rulesets
66 lines • 2.77 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateCommand = void 0;
const commander_1 = require("commander");
const core_1 = require("../../core");
const utils_1 = require("../../utils");
const path_1 = __importDefault(require("path"));
exports.generateCommand = new commander_1.Command('generate')
.description('Generate code from Figma components')
.argument('[url]', 'Figma component URL')
.option('-f, --file <string>', 'Figma file ID')
.option('-c, --component <string>', 'Component ID')
.option('-o, --output <string>', 'Output directory', './components')
.option('--framework <string>', 'Target framework', 'react')
.option('--styling <string>', 'Styling solution', 'tailwind')
.action(async (url, options) => {
try {
let fileId = options.file;
let componentId = options.component;
if (url) {
const parsed = (0, utils_1.parseFigmaUrl)(url);
fileId = parsed.fileId;
componentId = parsed.nodeId;
}
if (!fileId) {
throw new Error('Please provide either a Figma URL or file ID');
}
const figma = new core_1.FigmaService({
accessToken: process.env.FIGMA_ACCESS_TOKEN || '',
fileId
});
const generator = new core_1.CodeGenerator({
openaiApiKey: process.env.OPENAI_API_KEY || '',
framework: options.framework,
styling: options.styling
});
if (componentId) {
const component = await figma.getFileComponents(fileId);
const generated = await generator.generateComponent(component[0]);
const componentName = path_1.default.basename(component[0].name);
await (0, utils_1.writeGeneratedFiles)(generated, options.output, componentName);
}
else {
const components = await figma.getFileComponents(fileId);
for (const component of components) {
const generated = await generator.generateComponent(component);
const componentName = path_1.default.basename(component.name);
await (0, utils_1.writeGeneratedFiles)(generated, options.output, componentName);
}
}
console.log('✨ Code generation completed successfully!');
}
catch (error) {
if (error instanceof Error) {
console.error('❌ Error:', error.message);
}
else {
console.error('❌ An unknown error occurred');
}
process.exit(1);
}
});
//# sourceMappingURL=generate.js.map