| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #!/bin/bash
- # SVG文件目录
- SVG_DIR="public/supply-chain"
- # 输出目录
- OUTPUT_DIR="src/client/home/pages/SupplyChainDashboards/components/icons"
- # 需要转换的SVG文件列表
- SVG_FILES=(
- "union.svg"
- "img5.svg"
- "SupplyChainIcons.svg"
- "BasePointIcon.svg"
- "img7.svg"
- "SupplyChainNetwork.svg"
- "PopupInfoBox.svg"
- )
- # 确保输出目录存在
- mkdir -p "$OUTPUT_DIR"
- # 转换每个SVG文件
- for svg_file in "${SVG_FILES[@]}"; do
- svg_path="$SVG_DIR/$svg_file"
- # 检查SVG文件是否存在
- if [ ! -f "$svg_path" ]; then
- echo "警告: SVG文件不存在: $svg_file"
- continue
- fi
- # 生成组件名称
- component_name=$(echo "$svg_file" | sed 's/\.svg$//' | sed 's/[_-]\([a-z]\)/\U\1/g' | sed 's/^\([a-z]\)/\U\1/')
- # 转换SVG为JSX
- jsx_content=$(npx svg-to-jsx "$svg_path")
- # 生成React组件代码
- component_code="import React from 'react';
- interface ${component_name}Props {
- className?: string;
- fill?: string;
- stroke?: string;
- width?: number | string;
- height?: number | string;
- }
- const ${component_name}: React.FC<${component_name}Props> = ({
- className = \"\",
- fill = \"currentColor\",
- stroke = \"currentColor\",
- width,
- height
- }) => {
- return (
- ${jsx_content}
- );
- };
- export default ${component_name};"
- # 写入输出文件
- output_path="$OUTPUT_DIR/${component_name}.tsx"
- echo "$component_code" > "$output_path"
- echo "✓ 成功转换: $svg_file -> ${component_name}.tsx"
- done
- echo "\nSVG转JSX转换完成!"
|