vite-plugin-sprites
Advanced tools
Comparing version
/** | ||
* name: vite-plugin-sprites | ||
* version: 0.2.1 | ||
* version: 0.2.2 | ||
*/ | ||
import u from"fs";import x from"path";import w from"images";var $=(s,n,o)=>{let e=x.join(s,n,o);return x.relative(s,e)},m=(s={})=>{let{iconPath:n="/src/assets/icon",root:o="./"}=s,e=x.join(o,n);if(!u.existsSync(e)){console.log(`icon\u56FE\u7247\u8DEF\u5F84\u4E0D\u5B58\u5728${e}`);return}u.readdir(e,(a,g)=>{if(a)throw a;let p=g.filter(h=>(h.endsWith(".jpg")||h.endsWith(".png"))&&h!=="sprites.png"),r=p.length,c=0,i=[];console.log(`\u68C0\u6D4B\u5230${r}\u4E2A\u56FE\u7247\u6587\u4EF6\uFF0C\u5F00\u59CB\u8FDB\u884C\u5408\u5E76~`),p.forEach(h=>{let l=$(o,n,h),f=w(l).size();i.push({path:l,width:f.width,height:f.height}),c++,c===r&&C(i,s)})})},C=(s,n)=>{let{root:o="./",savePath:e=n.iconPath||"/src/assets/icon",width:a=500,spacing:g=5,prefix:p="icon-"}=n;s.sort((t,d)=>t.height<d.height);let r=0,c=0,i=0;s.forEach(t=>{t.width+r+g>a?(c+=i+g,r=0,i=0,t.x=t.x||0):t.x=t.x||r,t.height>i&&(i=t.height),t.y=t.y||c,r+=t.width+g});let h=c+i,l=w(a,h),f=$(o,e,"sprites.png"),v=`[class*="${p}"]:before{content:"";background-image: url(./sprites.png); display:flex;align-items: center} | ||
`;s.forEach(t=>{l.draw(w(t.path),t.x,t.y);let d=t.path.substring(0,t.path.indexOf(".")),S=t.x?`-${t.x}px`:0,j=t.y?`-${t.y}px`:0;v+=`.${p+d}:before{background-position: ${S} ${j};width: ${t.width}px;height: ${t.height}px} | ||
`});let b=$(o,e,"sprites.css");u.writeFile(`${b}`,v,function(t){if(t)throw t;console.log(`\u6210\u529F\u5199\u5165css\u6587\u4EF6\uFF1A${b}`)}),l.save(f),console.log(`\u6210\u529F\u5408\u5E76\u56FE\u7247\uFF1A${f}`)},P=m;var y=s=>{let n=s||{};return{name:"vitePluginSprites",enforce:"pre",configResolved(o){n.root=o.root},buildStart(){P(n)}}};y.images=P;var z=y;export{z as default}; | ||
import x from"fs";import u from"path";import w from"images";var $=(s,e,n)=>{let o=u.join(s,e,n);return u.relative(s,o)},C=(s={})=>{let{iconPath:e="/src/assets/icon",root:n="./"}=s,o=u.join(n,e);if(!x.existsSync(o)){console.log(`icon\u56FE\u7247\u8DEF\u5F84\u4E0D\u5B58\u5728${o}`);return}x.readdir(o,(h,g)=>{if(h)throw h;let l=g.filter(c=>(c.endsWith(".jpg")||c.endsWith(".png"))&&c!=="sprites.png"),r=l.length,a=0,i=[];console.log(`\u68C0\u6D4B\u5230${r}\u4E2A\u56FE\u7247\u6587\u4EF6\uFF0C\u5F00\u59CB\u8FDB\u884C\u5408\u5E76~`),l.forEach(c=>{let p=$(n,e,c),f=w(p).size();i.push({path:p,width:f.width,height:f.height}),a++,a===r&&E(i,s)})})},E=(s,e)=>{let{root:n="./",savePath:o=e.iconPath||"/src/assets/icon",width:h=500,spacing:g=5,prefix:l="icon-"}=e;s.sort((t,d)=>t.height<d.height);let r=0,a=0,i=0;s.forEach(t=>{t.width+r+g>h?(a+=i+g,r=0,i=0,t.x=t.x||0):t.x=t.x||r,t.height>i&&(i=t.height),t.y=t.y||a,r+=t.width+g});let c=a+i,p=w(h,c),f=$(n,o,"sprites.png"),v=`[class*="${l}"]:before{content:"";background-image: url(./sprites.png); display:flex;align-items: center} | ||
`;s.forEach(t=>{p.draw(w(t.path),t.x,t.y);let d=u.basename(t.path),S=d.substring(0,d.indexOf(".")),m=t.x?`-${t.x}px`:0,j=t.y?`-${t.y}px`:0;v+=`.${l+S}:before{background-position: ${m} ${j};width: ${t.width}px;height: ${t.height}px} | ||
`});let b=$(n,o,"sprites.css");x.writeFile(`${b}`,v,function(t){if(t)throw t;console.log(`\u6210\u529F\u5199\u5165css\u6587\u4EF6\uFF1A${b}`)}),p.save(f),console.log(`\u6210\u529F\u5408\u5E76\u56FE\u7247\uFF1A${f}`)},P=C;var y=s=>{let e=s||{};return{name:"vitePluginSprites",enforce:"pre",configResolved(n){e.root=n.root},buildStart(){P(e)}}};y.images=P;var N=y;export{N as default}; |
{ | ||
"name": "vite-plugin-sprites", | ||
"version": "0.2.1", | ||
"version": "0.2.2", | ||
"description": "一款基于NodeJs的图片合成Vite插件,可将多张小图合并成一张大图并生成对应的css样式,可有效减少服务器接收和发送请求,提高页面加载速度。", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
Sorry, the diff of this file is not supported yet
6845
0.44%