UNPKG

svg-spritify

Version:
5 lines (4 loc) 1.66 kB
#!/usr/bin/env node "use strict";var m=Object.defineProperty;var n=(r,t)=>m(r,"name",{value:t,configurable:!0});var g=require("fs"),f=require("svg-mixer"),c=require("commander");const h=n(r=>{const t=/(fill|stroke)="\s*([^"]+)\s*"/g;return r.replace(t,(e,o,s)=>(s=s!=="none"?"currentColor":"none",`${o}="${s}"`))},"normalizeColors"),S=n(r=>{const t=/<svg[^>]+>/g;let e=0;for(;e<3&&t.exec(r)!==null;)e++;return e>1},"hasMultipleSVGs"),w=n(r=>`export type Icon = ${C(r).map(e=>` | '${e}'`).join(` `)};`,"generateTsType"),C=n(r=>{const t=/id="\s*([^"]+)\s*"/g,e=[];let o=null;for(;o=t.exec(r);)e.push(o[1]);return e},"extractIDs");var I=n((r,t,e)=>new Promise((o,s)=>{var a=n(i=>{try{p(e.next(i))}catch(u){s(u)}},"fulfilled"),l=n(i=>{try{p(e.throw(i))}catch(u){s(u)}},"rejected"),p=n(i=>i.done?o(i.value):Promise.resolve(i.value).then(a,l),"step");p((e=e.apply(r,t)).next())}),"__async");const y=process.cwd(),v="icon",d="icons.svg",T="icon.ts";c.program.name("svg-spritify").description("SVG sprite generator CLI tool"),c.program.option("-i, --input <string>","entry point of the program",y),c.program.option("--no-recursive","don't search for SVGs recursively",!0),c.program.action(r=>I(null,null,function*(){const{input:t,recursive:e}=r,o=[e?"**/*.svg":"*.svg","!**/node_modules/**",`!${d}`];process.chdir(t);const s=yield f(o,{prettify:!0,spriteType:"stack",spriteConfig:{usageClassName:v,styles:`.${v}{display:none;}.${v}:target{display:inline;}`}});if(!S(s.content))throw new Error("Could not find any SVG files");const a=h(s.content),l=w(a);process.chdir(y),g.writeFileSync(d,a,"utf-8"),g.writeFileSync(T,l,"utf-8")})),c.program.parse(process.argv);