svgfusion-cmd
v1.7.1
Published
Command-line interface for converting SVG files into React and Vue 3 components with TypeScript support and batch processing capabilities.
Maintainers
Readme
SVGFusion CLI
🚀 Command-line interface for converting SVG files into production-ready React and Vue 3 components with TypeScript support and batch processing capabilities.
Installation
npm install -g svgfusion-cmd
# or
npx svgfusion-cmdQuick Start
# Convert single SVG to React component
svgfusion-cmd input.svg --output ./components --framework react
# Batch convert all SVGs in a directory
svgfusion-cmd ./icons --output ./components --framework vue --typescript
# Watch mode for development
svgfusion-cmd ./icons --output ./components --watchFeatures
- Batch Processing - Convert entire directories of SVG files
- Fast & Efficient - Optimized for large-scale conversions
- Framework Support - React and Vue 3 components
- TypeScript Ready - Generate .tsx/.ts files with full type support
- Watch Mode - Automatically convert files on changes
- Customizable - Extensive configuration options
- Zero Dependencies - Standalone CLI tool
Usage
Basic Commands
# Convert single file
svgfusion-cmd icon.svg --framework react --output ./components
# Convert directory
svgfusion-cmd ./icons --framework vue --output ./src/components
# With TypeScript
svgfusion-cmd ./icons --framework react --typescript --output ./components
# Watch mode
svgfusion-cmd ./icons --framework react --watch --output ./componentsOptions
| Option | Alias | Description | Default |
| -------------- | ----- | ----------------------------- | ---------- |
| --framework | -f | Target framework (react, vue) | react |
| --output | -o | Output directory | ./output |
| --typescript | -t | Generate TypeScript files | false |
| --watch | -w | Watch for file changes | false |
| --config | -c | Configuration file path | - |
| --help | -h | Show help | - |
| --version | -v | Show version | - |
Configuration File
Create a svgfusion.config.js file:
export default {
framework: 'react',
typescript: true,
output: './src/components/icons',
template: 'functional',
naming: 'PascalCase',
// Add custom transformations
transforms: {
removeIds: true,
addDisplayName: true,
},
};Examples
React Component Output
// Generated IconHome.tsx
import React from 'react';
interface IconHomeProps extends React.SVGProps<SVGSVGElement> {}
export const IconHome: React.FC<IconHomeProps> = props => {
return (
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="currentColor"
{...props}
>
<path d="M12 3l8 8v10h-6v-6H10v6H4V11l8-8z" />
</svg>
);
};
export default IconHome;Vue Component Output
<!-- Generated IconHome.vue -->
<template>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="currentColor"
v-bind="$attrs"
>
<path d="M12 3l8 8v10h-6v-6H10v6H4V11l8-8z" />
</svg>
</template>
<script setup lang="ts">
interface Props extends SVGAttributes {}
defineProps<Props>();
</script>Advanced Usage
Batch Processing with Naming Patterns
# Convert with custom naming
svgfusion-cmd ./icons --framework react --typescript \
--output ./components \
--naming "Icon{name}" \
--case PascalCaseIntegration with Build Tools
{
"scripts": {
"icons:build": "svgfusion-cmd ./assets/icons --framework react --typescript --output ./src/components/icons",
"icons:watch": "svgfusion-cmd ./assets/icons --framework react --typescript --output ./src/components/icons --watch"
}
}Documentation
Visit svgfusion.netlify.app for complete documentation, examples, and advanced configuration options.
License
MIT © lolvoid
