Package detail

svgfusion-cmd

lolvoid892MIT1.6.0

Command-line interface for converting SVG files into React and Vue 3 components with TypeScript support and batch processing capabilities.

svg, react, vue, vue3

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-cmd

Quick 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 --watch

Features

  • 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

SVGFusion CLI

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 ./components

Options

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 PascalCase

Integration 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