fast-vite-plugins 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,79 +1,54 @@
1
- "use strict";var D=Object.create;var x=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var O=(t,e)=>{for(var r in e)x(t,r,{get:e[r],enumerable:!0})},P=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of k(e))!M.call(t,o)&&o!==r&&x(t,o,{get:()=>e[o],enumerable:!(s=b(e,o))||s.enumerable});return t};var g=(t,e,r)=>(r=t!=null?D(U(t)):{},P(e||!t||!t.__esModule?x(r,"default",{value:t,enumerable:!0}):r,t)),R=t=>P(x({},"__esModule",{value:!0}),t);var Y={};O(Y,{buildSvgIcon:()=>J,cdnImport:()=>H,findSvgFile:()=>$,tsxComponentAutoImport:()=>W,versionUpdatePlugin:()=>V,vueComponentAutoImport:()=>_,writeTSXIcon:()=>T});module.exports=R(Y);var u=g(require("fs"),1),l=g(require("path"),1),$=t=>{let e=[];return u.default.readdirSync(t,{withFileTypes:!0}).forEach(s=>{if(s.isDirectory())e.push(...$(l.default.join(t,s.name)));else{let o=s.name.replace(".svg",""),a=u.default.readFileSync(l.default.join(t,s.name),"utf-8").replace(/<\?xml.*?\?>/,"").replace(/<!DOCTYPE svg.*?>/,"").trimStart().trimEnd().replace(/<svg([^>+].*?)>/,(c,p)=>{let i=p.match(/viewBox="[^"]+"/),n=p.match(/width="(\d+)"/),m=p.match(/height="(\d+)"/),f=1024,h=1024;n&&(f=n[0]),m&&(h=m[0]);let C="";return i?C=i[0]:C=`viewBox="0 0 ${f} ${h}"`,`<svg xmlns="http://www.w3.org/2000/svg" ${C}>`});e.push({iconName:o,componentName:o.charAt(0).toUpperCase()+o.slice(1),iconContent:a})}}),e.sort((s,o)=>s.iconName<o.iconName?-1:s.iconName>o.iconName?1:0)},T=(t,e,r,s)=>{let o=l.default.join(r,"src");u.default.mkdirSync(r,{recursive:!0}),u.default.mkdirSync(o,{recursive:!0});let a=`import { defineComponent } from "vue";
2
- import { ElIcon } from "element-plus";
1
+ "use strict";var E=Object.create;var x=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,O=Object.prototype.hasOwnProperty;var b=(t,e)=>{for(var n in e)x(t,n,{get:e[n],enumerable:!0})},F=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of U(e))!O.call(t,o)&&o!==n&&x(t,o,{get:()=>e[o],enumerable:!(s=k(e,o))||s.enumerable});return t};var g=(t,e,n)=>(n=t!=null?E(M(t)):{},F(e||!t||!t.__esModule?x(n,"default",{value:t,enumerable:!0}):n,t)),R=t=>F(x({},"__esModule",{value:!0}),t);var Z={};b(Z,{buildSvgIcon:()=>J,cdnImport:()=>H,findSvgFile:()=>$,tsxComponentAutoImport:()=>W,versionUpdatePlugin:()=>Y,vueComponentAutoImport:()=>_,writeTSXIcon:()=>T});module.exports=R(Z);var f=g(require("fs"),1),l=g(require("path"),1),$=t=>{let e=[];return f.default.readdirSync(t,{withFileTypes:!0}).forEach(s=>{if(s.isDirectory())e.push(...$(l.default.join(t,s.name)));else{let o=s.name.replace(".svg",""),c=f.default.readFileSync(l.default.join(t,s.name),"utf-8").replace(/<\?xml.*?\?>/,"").replace(/<!DOCTYPE svg.*?>/,"").trimStart().trimEnd().replace(/<svg([^>+].*?)>/,(a,p)=>{let r=p.match(/viewBox="[^"]+"/),i=p.match(/width="(\d+)"/),m=p.match(/height="(\d+)"/),u=1024,h=1024;i&&(u=i[0]),m&&(h=m[0]);let C="";return r?C=r[0]:C=`viewBox="0 0 ${u} ${h}"`,`<svg xmlns="http://www.w3.org/2000/svg" ${C}>`});e.push({iconName:o,componentName:o.charAt(0).toUpperCase()+o.slice(1),iconContent:c})}}),e.sort((s,o)=>s.iconName<o.iconName?-1:s.iconName>o.iconName?1:0)},T=(t,e,n,s)=>{let o=l.default.join(n,"src");f.default.mkdirSync(n,{recursive:!0}),f.default.mkdirSync(o,{recursive:!0});let c=`import { defineComponent } from "vue";
3
2
 
4
3
  /**
5
4
  * ${e} \u56FE\u6807\u7EC4\u4EF6
6
5
  */
7
6
  export default defineComponent({
8
7
  name: "${e}",
9
- components: {
10
- ElIcon,
11
- },
12
- setup(_, { attrs }) {
13
- return {
14
- attrs,
15
- };
16
- },
17
8
  render() {
18
9
  return (
19
- <ElIcon {...this.attrs} class="fa-icon fa-icon-${e} icon">
20
10
  ${s.split(`
21
- `).map(i=>` ${i}`).join(`
11
+ `).map(r=>` ${r}`).join(`
22
12
  `)}
23
- </ElIcon>
24
13
  );
25
14
  },
26
15
  });
27
- `;u.default.writeFileSync(l.default.join(o,`${t}.tsx`),a);let c=`import { withInstall } from "fast-element-plus";
16
+ `;f.default.writeFileSync(l.default.join(o,`${t}.tsx`),c);let a=`import { withInstall } from "fast-element-plus";
28
17
  import ${e}TSX from "./src/${t}.tsx";
29
18
 
30
19
  export const ${e} = withInstall(${e}TSX);
31
20
  export default ${e};
32
- `;u.default.writeFileSync(l.default.join(r,"index.ts"),c);let p=`import type { TSXWithInstall } from "fast-element-plus";
21
+ `;f.default.writeFileSync(l.default.join(n,"index.ts"),a);let p=`import type { TSXWithInstall } from "fast-element-plus";
33
22
  import type { default as ${e}TSX } from "./src/${t}";
34
23
 
35
24
  export declare const ${e}: TSXWithInstall<typeof ${e}TSX>;
36
25
  export default ${e};
37
- `;u.default.writeFileSync(l.default.join(r,"index.d.ts"),p)};function J(t,e){if(!t||!e)return;let r;return{name:"fast-vite-plugin-build-svg-icon",configResolved:s=>{r=s},buildStart(){let s=$(l.default.resolve(r.root,t)),o=l.default.resolve(r.root,e);u.default.mkdirSync(o,{recursive:!0});let a="",c="",p="",i="";s.forEach((n,m)=>{T(n.iconName,n.componentName,l.default.join(o,n.iconName),n.iconContent),a+=`import { ${n.componentName} } from "./${n.iconName}";
38
- `,c+=` ${n.iconName},`,p+=`export * from "./${n.iconName}";
39
- `,i+=` ${n.componentName}: (typeof import("./"))["${n.componentName}"];`,m+1<s.length&&(i+=`
40
- `,c+=`
41
- `)}),u.default.writeFileSync(l.default.join(o,"index.ts"),`import type { DefineComponent } from "vue";
42
- ${a}
26
+ `;f.default.writeFileSync(l.default.join(n,"index.d.ts"),p)};function J(t,e){if(!t||!e)return;let n;return{name:"fast-vite-plugin-build-svg-icon",configResolved:s=>{n=s},buildStart(){let s=$(l.default.resolve(n.root,t)),o=l.default.resolve(n.root,e);f.default.mkdirSync(o,{recursive:!0});let c="",a="",p="";s.forEach((r,i)=>{T(r.iconName,r.componentName,l.default.join(o,r.iconName),r.iconContent),c+=`import { ${r.componentName} } from "./${r.iconName}";
27
+ `,a+=` ${r.iconName},`,p+=`export * from "./${r.iconName}";
28
+ `,i+1<s.length&&(a+=`
29
+ `)}),f.default.writeFileSync(l.default.join(o,"index.ts"),`import type { DefineComponent } from "vue";
30
+ ${c}
43
31
  ${p}
44
32
  export default [
45
- ${c}
33
+ ${a}
46
34
  ] as Plugin[];
47
- `),u.default.writeFileSync(l.default.join(o,"index.d.ts"),`// For this project development
48
- import "@vue/runtime-core";
49
-
50
- // GlobalComponents for Volar
51
- declare module "@vue/runtime-core" {
52
- export interface GlobalComponents {
53
- ${i}
54
- }
55
-
56
- // interface ComponentCustomProperties {}
57
- }
58
-
59
- export {};
60
- `)}}}var S=g(require("fs"),1),j=g(require("path"),1),N=g(require("rollup-plugin-external-globals"),1),E=require("vite-plugin-externals"),X=process.env.NODE_ENV==="development";function L(t){let e=process.cwd(),r=j.default.join(e,"node_modules",t,"package.json");return S.default.existsSync(r)?JSON.parse(S.default.readFileSync(r,"utf8")).version:""}function A(t){return!!(t.startsWith("http:")||t.startsWith("https:")||t.startsWith("//"))}function I(t,e){let{path:r}=e;return A(r)&&(t=r),t.replace(/\{name\}/g,e.name).replace(/\{version\}/g,e.version).replace(/\{path\}/g,r)}function B(t,e){e=t.prodUrl||e;let r=t,s=t.version||L(r.name),o=[];Array.isArray(r.path)?o=r.path:o.push(r.path);let a={...r,version:s};o=o.map(i=>{if(!s&&!A(i))throw new Error(`modules: ${a.name} package.json file does not exist`);return I(e,{name:a.name,version:a.version,path:i})});let c=r.css||[];!Array.isArray(c)&&c&&(c=[c]);let p=Array.isArray(c)?c.map(i=>I(e,{name:a.name,version:a.version,path:i})):[];return{...r,version:s,pathList:o,cssList:p}}function H(t){let{modules:e=[],prodUrl:r="https://cdn.jsdelivr.net/npm/{name}@{version}/{path}",enableInDevMode:s=!1}=t,o=!1,a=(Array.isArray(e)?e:[e]).map(i=>typeof i=="function"?i(r):i).map(i=>B(i,r)),c={};a.forEach(i=>{c[i.name]=i.var,Array.isArray(i.alias)&&i.alias.forEach(n=>{c[n]=i.var})});let p=[{name:"fast-vite-plugin-cdn-import",enforce:"pre",config(i,{command:n}){o=n==="build";let m={build:{rollupOptions:{plugins:[]}}};return o&&(m.build.rollupOptions.plugins=[(0,N.default)(c)]),m},transformIndexHtml(i){if(!o&&!s)return i;let n=[];return a.forEach(m=>{m.pathList.forEach(f=>{let h={src:f,crossorigin:"anonymous",...m?.attrs??{}};n.push({tag:"script",attrs:h})}),m.cssList.forEach(f=>{let h={href:f,rel:"stylesheet",crossorigin:"anonymous",...m?.attrs??{}};n.push({tag:"link",attrs:h})})}),n}}];return X&&s&&p.push((0,E.viteExternalsPlugin)(c,{enforce:"pre"})),p}var y=g(require("fs"),1),w=g(require("path"),1);function W(t){if(t)return{name:"fast-vite-plugin-tsx-component-auto-import",buildStart(){let e=typeof t=="string"?t:t.dir,r=n=>n.charAt(0).toUpperCase()+n.slice(1),s=typeof t=="string"?r:t.formatter??r,o=y.default.readdirSync(e,{withFileTypes:!0});if(o?.length===0)return;let a=o.filter(n=>n.name!=="index.ts").map(n=>({componentName:s(n.name),fileName:n.name})).sort((n,m)=>n.componentName<m.componentName?-1:n.componentName>m.componentName?1:0),c="",p="",i="";a.forEach(({componentName:n,fileName:m},f)=>{c+=`import { ${n} } from "./${m}";
35
+ `)}}}var S=g(require("fs"),1),j=g(require("path"),1),A=g(require("rollup-plugin-external-globals"),1),I=require("vite-plugin-externals"),X=process.env.NODE_ENV==="development";function L(t){let e=process.cwd(),n=j.default.join(e,"node_modules",t,"package.json");return S.default.existsSync(n)?JSON.parse(S.default.readFileSync(n,"utf8")).version:""}function D(t){return!!(t.startsWith("http:")||t.startsWith("https:")||t.startsWith("//"))}function N(t,e){let{path:n}=e;return D(n)&&(t=n),t.replace(/\{name\}/g,e.name).replace(/\{version\}/g,e.version).replace(/\{path\}/g,n)}function B(t,e){e=t.prodUrl||e;let n=t,s=t.version||L(n.name),o=[];Array.isArray(n.path)?o=n.path:o.push(n.path);let c={...n,version:s};o=o.map(r=>{if(!s&&!D(r))throw new Error(`modules: ${c.name} package.json file does not exist`);return N(e,{name:c.name,version:c.version,path:r})});let a=n.css||[];!Array.isArray(a)&&a&&(a=[a]);let p=Array.isArray(a)?a.map(r=>N(e,{name:c.name,version:c.version,path:r})):[];return{...n,version:s,pathList:o,cssList:p}}function H(t){let{modules:e=[],prodUrl:n="https://cdn.jsdelivr.net/npm/{name}@{version}/{path}",enableInDevMode:s=!1}=t,o=!1,c=(Array.isArray(e)?e:[e]).map(r=>typeof r=="function"?r(n):r).map(r=>B(r,n)),a={};c.forEach(r=>{a[r.name]=r.var,Array.isArray(r.alias)&&r.alias.forEach(i=>{a[i]=r.var})});let p=[{name:"fast-vite-plugin-cdn-import",enforce:"pre",config(r,{command:i}){o=i==="build";let m={build:{rollupOptions:{plugins:[]}}};return o&&(m.build.rollupOptions.plugins=[(0,A.default)(a)]),m},transformIndexHtml(r){if(!o&&!s)return r;let i=[];return c.forEach(m=>{m.pathList.forEach(u=>{let h={src:u,crossorigin:"anonymous",...m?.attrs??{}};i.push({tag:"script",attrs:h})}),m.cssList.forEach(u=>{let h={href:u,rel:"stylesheet",crossorigin:"anonymous",...m?.attrs??{}};i.push({tag:"link",attrs:h})})}),i}}];return X&&s&&p.push((0,I.viteExternalsPlugin)(a,{enforce:"pre"})),p}var y=g(require("fs"),1),w=g(require("path"),1);function W(t){if(t)return{name:"fast-vite-plugin-tsx-component-auto-import",buildStart(){let e=typeof t=="string"?t:t.dir,n=i=>i.charAt(0).toUpperCase()+i.slice(1),s=typeof t=="string"?n:t.formatter??n,o=y.default.readdirSync(e,{withFileTypes:!0});if(o?.length===0)return;let c=o.filter(i=>i.name!=="index.ts").map(i=>({componentName:s(i.name),fileName:i.name})).sort((i,m)=>i.componentName<m.componentName?-1:i.componentName>m.componentName?1:0),a="",p="",r="";c.forEach(({componentName:i,fileName:m},u)=>{a+=`import { ${i} } from "./${m}";
61
36
  `,p+=`export * from "./${m}";
62
- `,i+=` ${n},`,f+1<a.length&&(i+=`
37
+ `,r+=` ${i},`,u+1<c.length&&(r+=`
63
38
  `)}),y.default.writeFileSync(w.default.join(e,"index.ts"),`import type { Plugin } from "vue";
64
- ${c}
39
+ ${a}
65
40
  ${p}
66
41
  export default [
67
- ${i}
42
+ ${r}
68
43
  ] as Plugin[];
69
- `)}}}function _(t){if(t)return{name:"fast-vite-plugin-vue-component-auto-import",buildStart(){let e=typeof t=="string"?t:t.dir,r=n=>n.charAt(0).toUpperCase()+n.slice(1),s=typeof t=="string"?r:t.formatter??r,o=y.default.readdirSync(e,{withFileTypes:!0});if(o?.length===0)return;let a=o.filter(n=>n.name!=="index.ts").map(n=>({componentName:s(n.name),fileName:n.name})).sort((n,m)=>n.componentName<m.componentName?-1:n.componentName>m.componentName?1:0),c="",p="",i="";a.forEach(({componentName:n,fileName:m},f)=>{c+=`import ${n} from "./${m}/index.vue";
44
+ `)}}}function _(t){if(t)return{name:"fast-vite-plugin-vue-component-auto-import",buildStart(){let e=typeof t=="string"?t:t.dir,n=i=>i.charAt(0).toUpperCase()+i.slice(1),s=typeof t=="string"?n:t.formatter??n,o=y.default.readdirSync(e,{withFileTypes:!0});if(o?.length===0)return;let c=o.filter(i=>i.name!=="index.ts").map(i=>({componentName:s(i.name),fileName:i.name})).sort((i,m)=>i.componentName<m.componentName?-1:i.componentName>m.componentName?1:0),a="",p="",r="";c.forEach(({componentName:i,fileName:m},u)=>{a+=`import ${i} from "./${m}/index.vue";
70
45
  `,p+=`export * from "./${m}/index.vue";
71
- `,i+=` ${n},`,f+1<a.length&&(i+=`
46
+ `,r+=` ${i},`,u+1<c.length&&(r+=`
72
47
  `)}),y.default.writeFileSync(w.default.join(e,"index.ts"),`import type { DefineComponent } from "vue";
73
- ${c}
48
+ ${a}
74
49
  ${p}
75
50
  export default [
76
- ${i}
51
+ ${r}
77
52
  ] as unknown as DefineComponent[];
78
- `)}}}var d=g(require("fs"),1),F=g(require("path"),1);function v(t,e=2){return t.toString().padStart(e,"0")}function G(t){let e=t.getUTCFullYear(),r=v(t.getUTCMonth()+1),s=v(t.getUTCDate()),o=v(t.getUTCHours()),a=v(t.getUTCMinutes()),c=v(t.getUTCSeconds()),p=v(t.getUTCMilliseconds(),3);return`Z ${e}-${r}-${s} ${o}:${a}:${c}.${p}`}function V(t){let e;return{name:"fast-vite-plugin-version-update",configResolved:r=>{e=r},buildStart(){let s=G(new Date),o=e.publicDir,a=F.default.join(o,"version.json");d.default.existsSync(o)||d.default.mkdirSync(o);let c=JSON.stringify({version:`v${t}`,dateTime:s},null,4);d.default.writeFileSync(a,c);let p=F.default.join(e.base,"package.json");if(d.default.existsSync(p)){let i=JSON.parse(d.default.readFileSync(p,"utf-8"));i.version=t,d.default.writeFileSync(p,JSON.stringify(i,null,2),"utf-8")}}}}0&&(module.exports={buildSvgIcon,cdnImport,findSvgFile,tsxComponentAutoImport,versionUpdatePlugin,vueComponentAutoImport,writeTSXIcon});
53
+ `)}}}var d=g(require("fs"),1),P=g(require("path"),1);function v(t,e=2){return t.toString().padStart(e,"0")}function V(t){let e=t.getUTCFullYear(),n=v(t.getUTCMonth()+1),s=v(t.getUTCDate()),o=v(t.getUTCHours()),c=v(t.getUTCMinutes()),a=v(t.getUTCSeconds()),p=v(t.getUTCMilliseconds(),3);return`Z ${e}-${n}-${s} ${o}:${c}:${a}.${p}`}function Y(t){let e;return{name:"fast-vite-plugin-version-update",configResolved:n=>{e=n},buildStart(){let s=V(new Date),o=e.publicDir,c=P.default.join(o,"version.json");d.default.existsSync(o)||d.default.mkdirSync(o);let a=JSON.stringify({version:`v${t}`,dateTime:s},null,4);d.default.writeFileSync(c,a);let p=P.default.join(e.base,"package.json");if(d.default.existsSync(p)){let r=JSON.parse(d.default.readFileSync(p,"utf-8"));r.version=t,d.default.writeFileSync(p,JSON.stringify(r,null,2),"utf-8")}}}}0&&(module.exports={buildSvgIcon,cdnImport,findSvgFile,tsxComponentAutoImport,versionUpdatePlugin,vueComponentAutoImport,writeTSXIcon});
79
54
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../packages/index.ts","../../packages/buildSvgIcon/index.ts","../../packages/cdnImport/index.ts","../../packages/componentAutoImport/index.ts","../../packages/versionUpdate/index.ts"],"sourcesContent":["export * from \"./buildSvgIcon\";\nexport * from \"./cdnImport\";\nexport * from \"./cdnImport/type\";\nexport * from \"./componentAutoImport\";\nexport * from \"./componentAutoImport/type\";\nexport * from \"./versionUpdate\";\n","import fs from \"fs\";\nimport path from \"path\";\nimport type { Plugin, ResolvedConfig } from \"vite\";\n\n/**\n * 查找 svg 文件\n */\n\nconst findSvgFile = (dir: string): { iconName: string; componentName: string; iconContent: string }[] => {\n\t// svg 内容\n\tconst svgContents: { iconName: string; componentName: string; iconContent: string }[] = [];\n\t// 获取当前目录下的文件\n\tconst svgFiles = fs.readdirSync(dir, {\n\t\twithFileTypes: true,\n\t});\n\n\tsvgFiles.forEach((file) => {\n\t\tif (file.isDirectory()) {\n\t\t\tsvgContents.push(...findSvgFile(path.join(dir, file.name)));\n\t\t} else {\n\t\t\tconst iconName = file.name.replace(\".svg\", \"\");\n\n\t\t\tconst svgContent = fs\n\t\t\t\t.readFileSync(path.join(dir, file.name), \"utf-8\")\n\t\t\t\t.replace(/<\\?xml.*?\\?>/, \"\")\n\t\t\t\t.replace(/<!DOCTYPE svg.*?>/, \"\")\n\t\t\t\t// .replace(/(\\r)|(\\n)/g, \"\")\n\t\t\t\t.trimStart()\n\t\t\t\t.trimEnd()\n\t\t\t\t// .replace(/(fill=\"[^>+].*?\")/g, 'fill=\"\"')\n\t\t\t\t.replace(/<svg([^>+].*?)>/, (match, attr) => {\n\t\t\t\t\tconst viewBoxMatch = attr.match(/viewBox=\"[^\"]+\"/);\n\t\t\t\t\tconst widthMatch = attr.match(/width=\"(\\d+)\"/);\n\t\t\t\t\tconst heightMatch = attr.match(/height=\"(\\d+)\"/);\n\t\t\t\t\tlet width = 1024;\n\t\t\t\t\tlet height = 1024;\n\t\t\t\t\tif (widthMatch) {\n\t\t\t\t\t\twidth = widthMatch[0];\n\t\t\t\t\t}\n\t\t\t\t\tif (heightMatch) {\n\t\t\t\t\t\theight = heightMatch[0];\n\t\t\t\t\t}\n\t\t\t\t\tlet viewBoxContent = \"\";\n\t\t\t\t\tif (!viewBoxMatch) {\n\t\t\t\t\t\tviewBoxContent = `viewBox=\"0 0 ${width} ${height}\"`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tviewBoxContent = viewBoxMatch[0];\n\t\t\t\t\t}\n\t\t\t\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" ${viewBoxContent}>`;\n\t\t\t\t});\n\n\t\t\tsvgContents.push({\n\t\t\t\t// iconName: iconName.charAt(0).toUpperCase() + iconName.slice(1),\n\t\t\t\ticonName,\n\t\t\t\tcomponentName: iconName.charAt(0).toUpperCase() + iconName.slice(1),\n\t\t\t\ticonContent: svgContent,\n\t\t\t});\n\t\t}\n\t});\n\n\treturn svgContents.sort((a, b) => {\n\t\tif (a.iconName < b.iconName) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (a.iconName > b.iconName) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t});\n};\n\n/**\n * 写入 TSX 图标\n */\nconst writeTSXIcon = (iconName: string, componentName: string, iconDir: string, svgContent: string): void => {\n\tconst srcDir = path.join(iconDir, \"src\");\n\n\tfs.mkdirSync(iconDir, { recursive: true });\n\tfs.mkdirSync(srcDir, { recursive: true });\n\n\tconst iconContent = `import { defineComponent } from \"vue\";\nimport { ElIcon } from \"element-plus\";\n\n/**\n * ${componentName} 图标组件\n */\nexport default defineComponent({\n\tname: \"${componentName}\",\n\tcomponents: {\n\t\tElIcon,\n\t},\n\tsetup(_, { attrs }) {\n\t\treturn {\n\t\t\tattrs,\n\t\t};\n\t},\n\trender() {\n\t\treturn (\n\t\t\t<ElIcon {...this.attrs} class=\"fa-icon fa-icon-${componentName} icon\">\n${svgContent\n\t.split(\"\\n\")\n\t.map((line) => `\t\t\t\t${line}`)\n\t.join(\"\\n\")}\n\t\t\t</ElIcon>\n\t\t);\n\t},\n});\n`;\n\n\tfs.writeFileSync(path.join(srcDir, `${iconName}.tsx`), iconContent);\n\n\tconst indexContent = `import { withInstall } from \"fast-element-plus\";\nimport ${componentName}TSX from \"./src/${iconName}.tsx\";\n\nexport const ${componentName} = withInstall(${componentName}TSX);\nexport default ${componentName};\n`;\n\n\tfs.writeFileSync(path.join(iconDir, \"index.ts\"), indexContent);\n\n\tconst indexDTS = `import type { TSXWithInstall } from \"fast-element-plus\";\nimport type { default as ${componentName}TSX } from \"./src/${iconName}\";\n\nexport declare const ${componentName}: TSXWithInstall<typeof ${componentName}TSX>;\nexport default ${componentName};\n`;\n\n\tfs.writeFileSync(path.join(iconDir, \"index.d.ts\"), indexDTS);\n};\n\n/**\n * 构建 svg 图标组件\n * @param dir svg 文件路径\n * @param writeDir 写入的文件路径 相对的即可\n */\nfunction buildSvgIcon(dir: string, writeDir: string): Plugin {\n\tif (!dir || !writeDir) return;\n\n\tlet config: ResolvedConfig;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-build-svg-icon\",\n\t\tconfigResolved: (resolvedConfig: ResolvedConfig): void | Promise<void> => {\n\t\t\t// 存储最终解析的配置\n\t\t\tconfig = resolvedConfig;\n\t\t},\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst svgFiles = findSvgFile(path.resolve(config.root, dir));\n\n\t\t\tconst iconsPath = path.resolve(config.root, writeDir);\n\t\t\tfs.mkdirSync(iconsPath, { recursive: true });\n\n\t\t\tlet iconImportContent = \"\";\n\t\t\tlet iconTypeContent = \"\";\n\t\t\tlet exportContent = \"\";\n\t\t\tlet typeDTSContent = \"\";\n\n\t\t\tsvgFiles.forEach((svg, idx) => {\n\t\t\t\twriteTSXIcon(svg.iconName, svg.componentName, path.join(iconsPath, svg.iconName), svg.iconContent);\n\n\t\t\t\ticonImportContent += `import { ${svg.componentName} } from \"./${svg.iconName}\";\n`;\n\n\t\t\t\ticonTypeContent += `\t${svg.iconName},`;\n\n\t\t\t\texportContent += `export * from \"./${svg.iconName}\";\n`;\n\n\t\t\t\ttypeDTSContent += `\t\t${svg.componentName}: (typeof import(\"./\"))[\"${svg.componentName}\"];`;\n\n\t\t\t\tif (idx + 1 < svgFiles.length) {\n\t\t\t\t\ttypeDTSContent += \"\\n\";\n\t\t\t\t\ticonTypeContent += \"\\n\";\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfs.writeFileSync(\n\t\t\t\tpath.join(iconsPath, \"index.ts\"),\n\t\t\t\t`import type { DefineComponent } from \"vue\";\n${iconImportContent}\n${exportContent}\nexport default [\n${iconTypeContent}\n] as Plugin[];\n`\n\t\t\t);\n\n\t\t\tfs.writeFileSync(\n\t\t\t\tpath.join(iconsPath, \"index.d.ts\"),\n\t\t\t\t`// For this project development\nimport \"@vue/runtime-core\";\n\n// GlobalComponents for Volar\ndeclare module \"@vue/runtime-core\" {\n\texport interface GlobalComponents {\n${typeDTSContent}\n\t}\n\n\t// interface ComponentCustomProperties {}\n}\n\nexport {};\n`\n\t\t\t);\n\t\t},\n\t};\n}\n\nexport { findSvgFile, writeTSXIcon, buildSvgIcon };\n","import fs from \"fs\";\nimport path from \"path\";\nimport externalGlobals from \"rollup-plugin-external-globals\";\nimport type { HtmlTagDescriptor, Plugin, UserConfig } from \"vite\";\nimport { viteExternalsPlugin } from \"vite-plugin-externals\";\nimport type { CdnImportOptions, Module } from \"./type\";\n\nconst isDev = process.env.NODE_ENV === \"development\";\n\n/**\n * get npm module version\n * @param name\n * @returns\n */\nfunction getModuleVersion(name: string): string {\n\tconst pwd = process.cwd();\n\tconst pkgFile = path.join(pwd, \"node_modules\", name, \"package.json\");\n\tif (fs.existsSync(pkgFile)) {\n\t\tconst pkgJson = JSON.parse(fs.readFileSync(pkgFile, \"utf8\"));\n\t\treturn pkgJson.version;\n\t}\n\n\treturn \"\";\n}\n\n/**\n * 是否完整的 url\n * @param path\n * @returns\n */\nfunction isFullPath(path: string): boolean {\n\treturn path.startsWith(\"http:\") || path.startsWith(\"https:\") || path.startsWith(\"//\") ? true : false;\n}\n\nfunction renderUrl(\n\turl: string,\n\tdata: {\n\t\tname: string;\n\t\tversion: string;\n\t\tpath: string;\n\t}\n): string {\n\tconst { path } = data;\n\tif (isFullPath(path)) {\n\t\turl = path;\n\t}\n\treturn url\n\t\t.replace(/\\{name\\}/g, data.name)\n\t\t.replace(/\\{version\\}/g, data.version)\n\t\t.replace(/\\{path\\}/g, path);\n}\n\nfunction getModuleInfo(module: Module, prodUrl: string): Module & { pathList?: string[]; cssList?: string[] } {\n\tprodUrl = module.prodUrl || prodUrl;\n\tconst v = module;\n\tconst version = module.version || getModuleVersion(v.name);\n\tlet pathList: string[] = [];\n\tif (!Array.isArray(v.path)) {\n\t\tpathList.push(v.path);\n\t} else {\n\t\tpathList = v.path;\n\t}\n\n\tconst data = {\n\t\t...v,\n\t\tversion,\n\t};\n\n\tpathList = pathList.map((p) => {\n\t\tif (!version && !isFullPath(p)) {\n\t\t\tthrow new Error(`modules: ${data.name} package.json file does not exist`);\n\t\t}\n\t\treturn renderUrl(prodUrl, {\n\t\t\tname: data.name,\n\t\t\tversion: data.version,\n\t\t\tpath: p,\n\t\t});\n\t});\n\n\tlet css = v.css || [];\n\tif (!Array.isArray(css) && css) {\n\t\tcss = [css];\n\t}\n\n\tconst cssList = !Array.isArray(css)\n\t\t? []\n\t\t: css.map((c) =>\n\t\t\t\trenderUrl(prodUrl, {\n\t\t\t\t\tname: data.name,\n\t\t\t\t\tversion: data.version,\n\t\t\t\t\tpath: c,\n\t\t\t\t})\n\t\t\t);\n\n\treturn {\n\t\t...v,\n\t\tversion,\n\t\tpathList,\n\t\tcssList,\n\t};\n}\n\n/**\n * CDN 导入\n * @param options\n * @returns\n */\nfunction cdnImport(options: CdnImportOptions): Plugin[] {\n\tconst { modules = [], prodUrl = \"https://cdn.jsdelivr.net/npm/{name}@{version}/{path}\", enableInDevMode = false } = options;\n\n\tlet isBuild = false;\n\n\tconst data = (Array.isArray(modules) ? modules : [modules])\n\t\t.map((v) => (typeof v === \"function\" ? v(prodUrl) : v))\n\t\t.map((v) => getModuleInfo(v, prodUrl));\n\n\tconst externalMap: {\n\t\t[name: string]: string;\n\t} = {};\n\n\tdata.forEach((v) => {\n\t\texternalMap[v.name] = v.var;\n\t\tif (Array.isArray(v.alias)) {\n\t\t\tv.alias.forEach((alias) => {\n\t\t\t\texternalMap[alias] = v.var;\n\t\t\t});\n\t\t}\n\t});\n\n\tconst plugins: Plugin[] = [\n\t\t{\n\t\t\tname: \"fast-vite-plugin-cdn-import\",\n\t\t\tenforce: \"pre\",\n\t\t\tconfig(_, { command }): UserConfig {\n\t\t\t\tisBuild = command === \"build\";\n\n\t\t\t\tconst userConfig: UserConfig = {\n\t\t\t\t\tbuild: {\n\t\t\t\t\t\trollupOptions: {\n\t\t\t\t\t\t\tplugins: [],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tif (isBuild) {\n\t\t\t\t\tuserConfig.build.rollupOptions.plugins = [externalGlobals(externalMap)];\n\t\t\t\t}\n\n\t\t\t\treturn userConfig;\n\t\t\t},\n\t\t\ttransformIndexHtml(html): string | HtmlTagDescriptor[] {\n\t\t\t\tif (!isBuild && !enableInDevMode) {\n\t\t\t\t\treturn html;\n\t\t\t\t}\n\n\t\t\t\tconst descriptors: HtmlTagDescriptor[] = [];\n\n\t\t\t\tdata.forEach((v) => {\n\t\t\t\t\tv.pathList.forEach((url) => {\n\t\t\t\t\t\tconst attrs = {\n\t\t\t\t\t\t\tsrc: url,\n\t\t\t\t\t\t\tcrossorigin: \"anonymous\",\n\t\t\t\t\t\t\t...(v?.attrs ?? {}),\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tdescriptors.push({\n\t\t\t\t\t\t\ttag: \"script\",\n\t\t\t\t\t\t\tattrs,\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\tv.cssList.forEach((url) => {\n\t\t\t\t\t\tconst attrs = {\n\t\t\t\t\t\t\thref: url,\n\t\t\t\t\t\t\trel: \"stylesheet\",\n\t\t\t\t\t\t\tcrossorigin: \"anonymous\",\n\t\t\t\t\t\t\t...(v?.attrs ?? {}),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tdescriptors.push({\n\t\t\t\t\t\t\ttag: \"link\",\n\t\t\t\t\t\t\tattrs,\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\treturn descriptors;\n\t\t\t},\n\t\t},\n\t];\n\n\tif (isDev && enableInDevMode) {\n\t\tplugins.push(\n\t\t\tviteExternalsPlugin(externalMap, {\n\t\t\t\tenforce: \"pre\",\n\t\t\t})\n\t\t);\n\t}\n\n\treturn plugins;\n}\n\nexport { cdnImport };\n","import fs from \"fs\";\nimport path from \"path\";\nimport type { Plugin } from \"vite\";\nimport type { AutoImportOptions } from \"./type\";\n\n/**\n * TSX组件自动导入\n * @description 只会生成安装文件\n * @param dir 组件文件夹路径\n */\nfunction tsxComponentAutoImport(options: string | AutoImportOptions): Plugin {\n\tif (!options) return;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-tsx-component-auto-import\",\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst dir = typeof options === \"string\" ? options : options.dir;\n\n\t\t\tconst defaultFormatter = (fName: string): string => {\n\t\t\t\treturn fName.charAt(0).toUpperCase() + fName.slice(1);\n\t\t\t};\n\n\t\t\tconst formatter = typeof options === \"string\" ? defaultFormatter : (options.formatter ?? defaultFormatter);\n\n\t\t\t// 获取所有文件夹名称\n\t\t\tconst cFiles = fs.readdirSync(dir, {\n\t\t\t\twithFileTypes: true,\n\t\t\t});\n\n\t\t\tif (cFiles?.length === 0) return;\n\n\t\t\t// 组件名称\n\t\t\tconst cNames = cFiles\n\t\t\t\t// 排除export文件\n\t\t\t\t.filter((f) => f.name !== \"index.ts\")\n\t\t\t\t.map((file) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcomponentName: formatter(file.name),\n\t\t\t\t\t\tfileName: file.name,\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tif (a.componentName < b.componentName) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.componentName > b.componentName) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\tlet importContent = \"\";\n\t\t\tlet exportContent = \"\";\n\t\t\tlet typeContent = \"\";\n\n\t\t\tcNames.forEach(({ componentName, fileName }, idx) => {\n\t\t\t\timportContent += `import { ${componentName} } from \"./${fileName}\";\n`;\n\n\t\t\t\texportContent += `export * from \"./${fileName}\";\n`;\n\n\t\t\t\ttypeContent += `\t${componentName},`;\n\n\t\t\t\tif (idx + 1 < cNames.length) {\n\t\t\t\t\ttypeContent += \"\\n\";\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfs.writeFileSync(\n\t\t\t\tpath.join(dir, \"index.ts\"),\n\t\t\t\t`import type { Plugin } from \"vue\";\n${importContent}\n${exportContent}\nexport default [\n${typeContent}\n] as Plugin[];\n`\n\t\t\t);\n\t\t},\n\t};\n}\n\n/**\n * VUE组件自动导入\n * @description 只会生成安装文件\n * @param dir 组件文件夹路径\n */\nfunction vueComponentAutoImport(options: string | AutoImportOptions): Plugin {\n\tif (!options) return;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-vue-component-auto-import\",\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst dir = typeof options === \"string\" ? options : options.dir;\n\n\t\t\tconst defaultFormatter = (fName: string): string => {\n\t\t\t\treturn fName.charAt(0).toUpperCase() + fName.slice(1);\n\t\t\t};\n\n\t\t\tconst formatter = typeof options === \"string\" ? defaultFormatter : (options.formatter ?? defaultFormatter);\n\n\t\t\t// 获取所有文件夹名称\n\t\t\tconst cFiles = fs.readdirSync(dir, {\n\t\t\t\twithFileTypes: true,\n\t\t\t});\n\n\t\t\tif (cFiles?.length === 0) return;\n\n\t\t\t// 组件名称\n\t\t\tconst cNames = cFiles\n\t\t\t\t// 排除export文件\n\t\t\t\t.filter((f) => f.name !== \"index.ts\")\n\t\t\t\t.map((file) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcomponentName: formatter(file.name),\n\t\t\t\t\t\tfileName: file.name,\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tif (a.componentName < b.componentName) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.componentName > b.componentName) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\tlet importContent = \"\";\n\t\t\tlet exportContent = \"\";\n\t\t\tlet typeContent = \"\";\n\n\t\t\tcNames.forEach(({ componentName, fileName }, idx) => {\n\t\t\t\timportContent += `import ${componentName} from \"./${fileName}/index.vue\";\n`;\n\n\t\t\t\texportContent += `export * from \"./${fileName}/index.vue\";\n`;\n\n\t\t\t\ttypeContent += `\t${componentName},`;\n\n\t\t\t\tif (idx + 1 < cNames.length) {\n\t\t\t\t\ttypeContent += \"\\n\";\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfs.writeFileSync(\n\t\t\t\tpath.join(dir, \"index.ts\"),\n\t\t\t\t`import type { DefineComponent } from \"vue\";\n${importContent}\n${exportContent}\nexport default [\n${typeContent}\n] as unknown as DefineComponent[];\n`\n\t\t\t);\n\t\t},\n\t};\n}\n\nexport { tsxComponentAutoImport, vueComponentAutoImport };\n","import fs from \"fs\";\nimport path from \"path\";\nimport type { Plugin, ResolvedConfig } from \"vite\";\n\nfunction padZero(num: number, length = 2): string {\n\treturn num.toString().padStart(length, \"0\");\n}\n\nfunction formatDate(date: Date): string {\n\tconst year = date.getUTCFullYear();\n\tconst month = padZero(date.getUTCMonth() + 1);\n\tconst day = padZero(date.getUTCDate());\n\tconst hours = padZero(date.getUTCHours());\n\tconst minutes = padZero(date.getUTCMinutes());\n\tconst seconds = padZero(date.getUTCSeconds());\n\tconst milliseconds = padZero(date.getUTCMilliseconds(), 3);\n\n\treturn `Z ${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`;\n}\n\n/**\n * 版本更新插件\n * @param version 不要携带 'v',示例:1.0.0\n * @returns\n */\nfunction versionUpdatePlugin(version: string): Plugin {\n\tlet config: ResolvedConfig;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-version-update\",\n\t\tconfigResolved: (resolvedConfig: ResolvedConfig): void | Promise<void> => {\n\t\t\t// 存储最终解析的配置\n\t\t\tconfig = resolvedConfig;\n\t\t},\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst curDate = new Date();\n\n\t\t\tconst dateTime = formatDate(curDate);\n\n\t\t\tconst versionDir = config.publicDir;\n\t\t\tconst versionPath = path.join(versionDir, \"version.json\");\n\t\t\tif (!fs.existsSync(versionDir)) {\n\t\t\t\tfs.mkdirSync(versionDir);\n\t\t\t}\n\n\t\t\t// 写入版本信息文件\n\t\t\tconst content = JSON.stringify({ version: `v${version}`, dateTime }, null, 4);\n\t\t\tfs.writeFileSync(versionPath, content);\n\n\t\t\tconst pkgPath = path.join(config.base, \"package.json\");\n\t\t\tif (fs.existsSync(pkgPath)) {\n\t\t\t\tconst pkgJson = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n\t\t\t\tpkgJson.version = version;\n\t\t\t\tfs.writeFileSync(pkgPath, JSON.stringify(pkgJson, null, 2), \"utf-8\");\n\t\t\t}\n\t\t},\n\t};\n}\n\nexport { versionUpdatePlugin };\n"],"mappings":"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","names":["packages_exports","__export","buildSvgIcon","cdnImport","findSvgFile","tsxComponentAutoImport","versionUpdatePlugin","vueComponentAutoImport","writeTSXIcon","__toCommonJS","import_fs","import_path","findSvgFile","dir","svgContents","fs","file","path","iconName","svgContent","match","attr","viewBoxMatch","widthMatch","heightMatch","width","height","viewBoxContent","a","b","writeTSXIcon","componentName","iconDir","srcDir","iconContent","line","indexContent","indexDTS","buildSvgIcon","writeDir","config","resolvedConfig","svgFiles","iconsPath","iconImportContent","iconTypeContent","exportContent","typeDTSContent","svg","idx","import_fs","import_path","import_rollup_plugin_external_globals","import_vite_plugin_externals","isDev","getModuleVersion","name","pwd","pkgFile","path","fs","isFullPath","renderUrl","url","data","getModuleInfo","module","prodUrl","v","version","pathList","p","css","cssList","c","cdnImport","options","modules","enableInDevMode","isBuild","externalMap","alias","plugins","_","command","userConfig","externalGlobals","html","descriptors","attrs","import_fs","import_path","tsxComponentAutoImport","options","dir","defaultFormatter","fName","formatter","cFiles","fs","cNames","f","file","a","b","importContent","exportContent","typeContent","componentName","fileName","idx","path","vueComponentAutoImport","import_fs","import_path","padZero","num","length","formatDate","date","year","month","day","hours","minutes","seconds","milliseconds","versionUpdatePlugin","version","config","resolvedConfig","dateTime","versionDir","versionPath","path","fs","content","pkgPath","pkgJson"]}
1
+ {"version":3,"sources":["../../packages/index.ts","../../packages/buildSvgIcon/index.ts","../../packages/cdnImport/index.ts","../../packages/componentAutoImport/index.ts","../../packages/versionUpdate/index.ts"],"sourcesContent":["export * from \"./buildSvgIcon\";\nexport * from \"./cdnImport\";\nexport * from \"./cdnImport/type\";\nexport * from \"./componentAutoImport\";\nexport * from \"./componentAutoImport/type\";\nexport * from \"./versionUpdate\";\n","import fs from \"fs\";\nimport path from \"path\";\nimport type { Plugin, ResolvedConfig } from \"vite\";\n\n/**\n * 查找 svg 文件\n */\n\nconst findSvgFile = (dir: string): { iconName: string; componentName: string; iconContent: string }[] => {\n\t// svg 内容\n\tconst svgContents: { iconName: string; componentName: string; iconContent: string }[] = [];\n\t// 获取当前目录下的文件\n\tconst svgFiles = fs.readdirSync(dir, {\n\t\twithFileTypes: true,\n\t});\n\n\tsvgFiles.forEach((file) => {\n\t\tif (file.isDirectory()) {\n\t\t\tsvgContents.push(...findSvgFile(path.join(dir, file.name)));\n\t\t} else {\n\t\t\tconst iconName = file.name.replace(\".svg\", \"\");\n\n\t\t\tconst svgContent = fs\n\t\t\t\t.readFileSync(path.join(dir, file.name), \"utf-8\")\n\t\t\t\t.replace(/<\\?xml.*?\\?>/, \"\")\n\t\t\t\t.replace(/<!DOCTYPE svg.*?>/, \"\")\n\t\t\t\t// .replace(/(\\r)|(\\n)/g, \"\")\n\t\t\t\t.trimStart()\n\t\t\t\t.trimEnd()\n\t\t\t\t// .replace(/(fill=\"[^>+].*?\")/g, 'fill=\"\"')\n\t\t\t\t.replace(/<svg([^>+].*?)>/, (match, attr) => {\n\t\t\t\t\tconst viewBoxMatch = attr.match(/viewBox=\"[^\"]+\"/);\n\t\t\t\t\tconst widthMatch = attr.match(/width=\"(\\d+)\"/);\n\t\t\t\t\tconst heightMatch = attr.match(/height=\"(\\d+)\"/);\n\t\t\t\t\tlet width = 1024;\n\t\t\t\t\tlet height = 1024;\n\t\t\t\t\tif (widthMatch) {\n\t\t\t\t\t\twidth = widthMatch[0];\n\t\t\t\t\t}\n\t\t\t\t\tif (heightMatch) {\n\t\t\t\t\t\theight = heightMatch[0];\n\t\t\t\t\t}\n\t\t\t\t\tlet viewBoxContent = \"\";\n\t\t\t\t\tif (!viewBoxMatch) {\n\t\t\t\t\t\tviewBoxContent = `viewBox=\"0 0 ${width} ${height}\"`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tviewBoxContent = viewBoxMatch[0];\n\t\t\t\t\t}\n\t\t\t\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" ${viewBoxContent}>`;\n\t\t\t\t});\n\n\t\t\tsvgContents.push({\n\t\t\t\t// iconName: iconName.charAt(0).toUpperCase() + iconName.slice(1),\n\t\t\t\ticonName,\n\t\t\t\tcomponentName: iconName.charAt(0).toUpperCase() + iconName.slice(1),\n\t\t\t\ticonContent: svgContent,\n\t\t\t});\n\t\t}\n\t});\n\n\treturn svgContents.sort((a, b) => {\n\t\tif (a.iconName < b.iconName) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (a.iconName > b.iconName) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t});\n};\n\n/**\n * 写入 TSX 图标\n */\nconst writeTSXIcon = (iconName: string, componentName: string, iconDir: string, svgContent: string): void => {\n\tconst srcDir = path.join(iconDir, \"src\");\n\n\tfs.mkdirSync(iconDir, { recursive: true });\n\tfs.mkdirSync(srcDir, { recursive: true });\n\n\tconst iconContent = `import { defineComponent } from \"vue\";\n\n/**\n * ${componentName} 图标组件\n */\nexport default defineComponent({\n\tname: \"${componentName}\",\n\trender() {\n\t\treturn (\n${svgContent\n\t.split(\"\\n\")\n\t.map((line) => `\t\t\t${line}`)\n\t.join(\"\\n\")}\n\t\t);\n\t},\n});\n`;\n\n\tfs.writeFileSync(path.join(srcDir, `${iconName}.tsx`), iconContent);\n\n\tconst indexContent = `import { withInstall } from \"fast-element-plus\";\nimport ${componentName}TSX from \"./src/${iconName}.tsx\";\n\nexport const ${componentName} = withInstall(${componentName}TSX);\nexport default ${componentName};\n`;\n\n\tfs.writeFileSync(path.join(iconDir, \"index.ts\"), indexContent);\n\n\tconst indexDTS = `import type { TSXWithInstall } from \"fast-element-plus\";\nimport type { default as ${componentName}TSX } from \"./src/${iconName}\";\n\nexport declare const ${componentName}: TSXWithInstall<typeof ${componentName}TSX>;\nexport default ${componentName};\n`;\n\n\tfs.writeFileSync(path.join(iconDir, \"index.d.ts\"), indexDTS);\n};\n\n/**\n * 构建 svg 图标组件\n * @param dir svg 文件路径\n * @param writeDir 写入的文件路径 相对的即可\n */\nfunction buildSvgIcon(dir: string, writeDir: string): Plugin {\n\tif (!dir || !writeDir) return;\n\n\tlet config: ResolvedConfig;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-build-svg-icon\",\n\t\tconfigResolved: (resolvedConfig: ResolvedConfig): void | Promise<void> => {\n\t\t\t// 存储最终解析的配置\n\t\t\tconfig = resolvedConfig;\n\t\t},\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst svgFiles = findSvgFile(path.resolve(config.root, dir));\n\n\t\t\tconst iconsPath = path.resolve(config.root, writeDir);\n\t\t\tfs.mkdirSync(iconsPath, { recursive: true });\n\n\t\t\tlet iconImportContent = \"\";\n\t\t\tlet iconTypeContent = \"\";\n\t\t\tlet exportContent = \"\";\n\n\t\t\tsvgFiles.forEach((svg, idx) => {\n\t\t\t\twriteTSXIcon(svg.iconName, svg.componentName, path.join(iconsPath, svg.iconName), svg.iconContent);\n\n\t\t\t\ticonImportContent += `import { ${svg.componentName} } from \"./${svg.iconName}\";\n`;\n\n\t\t\t\ticonTypeContent += `\t${svg.iconName},`;\n\n\t\t\t\texportContent += `export * from \"./${svg.iconName}\";\n`;\n\n\t\t\t\tif (idx + 1 < svgFiles.length) {\n\t\t\t\t\ticonTypeContent += \"\\n\";\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfs.writeFileSync(\n\t\t\t\tpath.join(iconsPath, \"index.ts\"),\n\t\t\t\t`import type { DefineComponent } from \"vue\";\n${iconImportContent}\n${exportContent}\nexport default [\n${iconTypeContent}\n] as Plugin[];\n`\n\t\t\t);\n\t\t},\n\t};\n}\n\nexport { findSvgFile, writeTSXIcon, buildSvgIcon };\n","import fs from \"fs\";\nimport path from \"path\";\nimport externalGlobals from \"rollup-plugin-external-globals\";\nimport type { HtmlTagDescriptor, Plugin, UserConfig } from \"vite\";\nimport { viteExternalsPlugin } from \"vite-plugin-externals\";\nimport type { CdnImportOptions, Module } from \"./type\";\n\nconst isDev = process.env.NODE_ENV === \"development\";\n\n/**\n * get npm module version\n * @param name\n * @returns\n */\nfunction getModuleVersion(name: string): string {\n\tconst pwd = process.cwd();\n\tconst pkgFile = path.join(pwd, \"node_modules\", name, \"package.json\");\n\tif (fs.existsSync(pkgFile)) {\n\t\tconst pkgJson = JSON.parse(fs.readFileSync(pkgFile, \"utf8\"));\n\t\treturn pkgJson.version;\n\t}\n\n\treturn \"\";\n}\n\n/**\n * 是否完整的 url\n * @param path\n * @returns\n */\nfunction isFullPath(path: string): boolean {\n\treturn path.startsWith(\"http:\") || path.startsWith(\"https:\") || path.startsWith(\"//\") ? true : false;\n}\n\nfunction renderUrl(\n\turl: string,\n\tdata: {\n\t\tname: string;\n\t\tversion: string;\n\t\tpath: string;\n\t}\n): string {\n\tconst { path } = data;\n\tif (isFullPath(path)) {\n\t\turl = path;\n\t}\n\treturn url\n\t\t.replace(/\\{name\\}/g, data.name)\n\t\t.replace(/\\{version\\}/g, data.version)\n\t\t.replace(/\\{path\\}/g, path);\n}\n\nfunction getModuleInfo(module: Module, prodUrl: string): Module & { pathList?: string[]; cssList?: string[] } {\n\tprodUrl = module.prodUrl || prodUrl;\n\tconst v = module;\n\tconst version = module.version || getModuleVersion(v.name);\n\tlet pathList: string[] = [];\n\tif (!Array.isArray(v.path)) {\n\t\tpathList.push(v.path);\n\t} else {\n\t\tpathList = v.path;\n\t}\n\n\tconst data = {\n\t\t...v,\n\t\tversion,\n\t};\n\n\tpathList = pathList.map((p) => {\n\t\tif (!version && !isFullPath(p)) {\n\t\t\tthrow new Error(`modules: ${data.name} package.json file does not exist`);\n\t\t}\n\t\treturn renderUrl(prodUrl, {\n\t\t\tname: data.name,\n\t\t\tversion: data.version,\n\t\t\tpath: p,\n\t\t});\n\t});\n\n\tlet css = v.css || [];\n\tif (!Array.isArray(css) && css) {\n\t\tcss = [css];\n\t}\n\n\tconst cssList = !Array.isArray(css)\n\t\t? []\n\t\t: css.map((c) =>\n\t\t\t\trenderUrl(prodUrl, {\n\t\t\t\t\tname: data.name,\n\t\t\t\t\tversion: data.version,\n\t\t\t\t\tpath: c,\n\t\t\t\t})\n\t\t\t);\n\n\treturn {\n\t\t...v,\n\t\tversion,\n\t\tpathList,\n\t\tcssList,\n\t};\n}\n\n/**\n * CDN 导入\n * @param options\n * @returns\n */\nfunction cdnImport(options: CdnImportOptions): Plugin[] {\n\tconst { modules = [], prodUrl = \"https://cdn.jsdelivr.net/npm/{name}@{version}/{path}\", enableInDevMode = false } = options;\n\n\tlet isBuild = false;\n\n\tconst data = (Array.isArray(modules) ? modules : [modules])\n\t\t.map((v) => (typeof v === \"function\" ? v(prodUrl) : v))\n\t\t.map((v) => getModuleInfo(v, prodUrl));\n\n\tconst externalMap: {\n\t\t[name: string]: string;\n\t} = {};\n\n\tdata.forEach((v) => {\n\t\texternalMap[v.name] = v.var;\n\t\tif (Array.isArray(v.alias)) {\n\t\t\tv.alias.forEach((alias) => {\n\t\t\t\texternalMap[alias] = v.var;\n\t\t\t});\n\t\t}\n\t});\n\n\tconst plugins: Plugin[] = [\n\t\t{\n\t\t\tname: \"fast-vite-plugin-cdn-import\",\n\t\t\tenforce: \"pre\",\n\t\t\tconfig(_, { command }): UserConfig {\n\t\t\t\tisBuild = command === \"build\";\n\n\t\t\t\tconst userConfig: UserConfig = {\n\t\t\t\t\tbuild: {\n\t\t\t\t\t\trollupOptions: {\n\t\t\t\t\t\t\tplugins: [],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tif (isBuild) {\n\t\t\t\t\tuserConfig.build.rollupOptions.plugins = [externalGlobals(externalMap)];\n\t\t\t\t}\n\n\t\t\t\treturn userConfig;\n\t\t\t},\n\t\t\ttransformIndexHtml(html): string | HtmlTagDescriptor[] {\n\t\t\t\tif (!isBuild && !enableInDevMode) {\n\t\t\t\t\treturn html;\n\t\t\t\t}\n\n\t\t\t\tconst descriptors: HtmlTagDescriptor[] = [];\n\n\t\t\t\tdata.forEach((v) => {\n\t\t\t\t\tv.pathList.forEach((url) => {\n\t\t\t\t\t\tconst attrs = {\n\t\t\t\t\t\t\tsrc: url,\n\t\t\t\t\t\t\tcrossorigin: \"anonymous\",\n\t\t\t\t\t\t\t...(v?.attrs ?? {}),\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tdescriptors.push({\n\t\t\t\t\t\t\ttag: \"script\",\n\t\t\t\t\t\t\tattrs,\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\tv.cssList.forEach((url) => {\n\t\t\t\t\t\tconst attrs = {\n\t\t\t\t\t\t\thref: url,\n\t\t\t\t\t\t\trel: \"stylesheet\",\n\t\t\t\t\t\t\tcrossorigin: \"anonymous\",\n\t\t\t\t\t\t\t...(v?.attrs ?? {}),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tdescriptors.push({\n\t\t\t\t\t\t\ttag: \"link\",\n\t\t\t\t\t\t\tattrs,\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\treturn descriptors;\n\t\t\t},\n\t\t},\n\t];\n\n\tif (isDev && enableInDevMode) {\n\t\tplugins.push(\n\t\t\tviteExternalsPlugin(externalMap, {\n\t\t\t\tenforce: \"pre\",\n\t\t\t})\n\t\t);\n\t}\n\n\treturn plugins;\n}\n\nexport { cdnImport };\n","import fs from \"fs\";\nimport path from \"path\";\nimport type { Plugin } from \"vite\";\nimport type { AutoImportOptions } from \"./type\";\n\n/**\n * TSX组件自动导入\n * @description 只会生成安装文件\n * @param dir 组件文件夹路径\n */\nfunction tsxComponentAutoImport(options: string | AutoImportOptions): Plugin {\n\tif (!options) return;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-tsx-component-auto-import\",\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst dir = typeof options === \"string\" ? options : options.dir;\n\n\t\t\tconst defaultFormatter = (fName: string): string => {\n\t\t\t\treturn fName.charAt(0).toUpperCase() + fName.slice(1);\n\t\t\t};\n\n\t\t\tconst formatter = typeof options === \"string\" ? defaultFormatter : (options.formatter ?? defaultFormatter);\n\n\t\t\t// 获取所有文件夹名称\n\t\t\tconst cFiles = fs.readdirSync(dir, {\n\t\t\t\twithFileTypes: true,\n\t\t\t});\n\n\t\t\tif (cFiles?.length === 0) return;\n\n\t\t\t// 组件名称\n\t\t\tconst cNames = cFiles\n\t\t\t\t// 排除export文件\n\t\t\t\t.filter((f) => f.name !== \"index.ts\")\n\t\t\t\t.map((file) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcomponentName: formatter(file.name),\n\t\t\t\t\t\tfileName: file.name,\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tif (a.componentName < b.componentName) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.componentName > b.componentName) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\tlet importContent = \"\";\n\t\t\tlet exportContent = \"\";\n\t\t\tlet typeContent = \"\";\n\n\t\t\tcNames.forEach(({ componentName, fileName }, idx) => {\n\t\t\t\timportContent += `import { ${componentName} } from \"./${fileName}\";\n`;\n\n\t\t\t\texportContent += `export * from \"./${fileName}\";\n`;\n\n\t\t\t\ttypeContent += `\t${componentName},`;\n\n\t\t\t\tif (idx + 1 < cNames.length) {\n\t\t\t\t\ttypeContent += \"\\n\";\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfs.writeFileSync(\n\t\t\t\tpath.join(dir, \"index.ts\"),\n\t\t\t\t`import type { Plugin } from \"vue\";\n${importContent}\n${exportContent}\nexport default [\n${typeContent}\n] as Plugin[];\n`\n\t\t\t);\n\t\t},\n\t};\n}\n\n/**\n * VUE组件自动导入\n * @description 只会生成安装文件\n * @param dir 组件文件夹路径\n */\nfunction vueComponentAutoImport(options: string | AutoImportOptions): Plugin {\n\tif (!options) return;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-vue-component-auto-import\",\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst dir = typeof options === \"string\" ? options : options.dir;\n\n\t\t\tconst defaultFormatter = (fName: string): string => {\n\t\t\t\treturn fName.charAt(0).toUpperCase() + fName.slice(1);\n\t\t\t};\n\n\t\t\tconst formatter = typeof options === \"string\" ? defaultFormatter : (options.formatter ?? defaultFormatter);\n\n\t\t\t// 获取所有文件夹名称\n\t\t\tconst cFiles = fs.readdirSync(dir, {\n\t\t\t\twithFileTypes: true,\n\t\t\t});\n\n\t\t\tif (cFiles?.length === 0) return;\n\n\t\t\t// 组件名称\n\t\t\tconst cNames = cFiles\n\t\t\t\t// 排除export文件\n\t\t\t\t.filter((f) => f.name !== \"index.ts\")\n\t\t\t\t.map((file) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcomponentName: formatter(file.name),\n\t\t\t\t\t\tfileName: file.name,\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tif (a.componentName < b.componentName) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.componentName > b.componentName) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\tlet importContent = \"\";\n\t\t\tlet exportContent = \"\";\n\t\t\tlet typeContent = \"\";\n\n\t\t\tcNames.forEach(({ componentName, fileName }, idx) => {\n\t\t\t\timportContent += `import ${componentName} from \"./${fileName}/index.vue\";\n`;\n\n\t\t\t\texportContent += `export * from \"./${fileName}/index.vue\";\n`;\n\n\t\t\t\ttypeContent += `\t${componentName},`;\n\n\t\t\t\tif (idx + 1 < cNames.length) {\n\t\t\t\t\ttypeContent += \"\\n\";\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfs.writeFileSync(\n\t\t\t\tpath.join(dir, \"index.ts\"),\n\t\t\t\t`import type { DefineComponent } from \"vue\";\n${importContent}\n${exportContent}\nexport default [\n${typeContent}\n] as unknown as DefineComponent[];\n`\n\t\t\t);\n\t\t},\n\t};\n}\n\nexport { tsxComponentAutoImport, vueComponentAutoImport };\n","import fs from \"fs\";\nimport path from \"path\";\nimport type { Plugin, ResolvedConfig } from \"vite\";\n\nfunction padZero(num: number, length = 2): string {\n\treturn num.toString().padStart(length, \"0\");\n}\n\nfunction formatDate(date: Date): string {\n\tconst year = date.getUTCFullYear();\n\tconst month = padZero(date.getUTCMonth() + 1);\n\tconst day = padZero(date.getUTCDate());\n\tconst hours = padZero(date.getUTCHours());\n\tconst minutes = padZero(date.getUTCMinutes());\n\tconst seconds = padZero(date.getUTCSeconds());\n\tconst milliseconds = padZero(date.getUTCMilliseconds(), 3);\n\n\treturn `Z ${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`;\n}\n\n/**\n * 版本更新插件\n * @param version 不要携带 'v',示例:1.0.0\n * @returns\n */\nfunction versionUpdatePlugin(version: string): Plugin {\n\tlet config: ResolvedConfig;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-version-update\",\n\t\tconfigResolved: (resolvedConfig: ResolvedConfig): void | Promise<void> => {\n\t\t\t// 存储最终解析的配置\n\t\t\tconfig = resolvedConfig;\n\t\t},\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst curDate = new Date();\n\n\t\t\tconst dateTime = formatDate(curDate);\n\n\t\t\tconst versionDir = config.publicDir;\n\t\t\tconst versionPath = path.join(versionDir, \"version.json\");\n\t\t\tif (!fs.existsSync(versionDir)) {\n\t\t\t\tfs.mkdirSync(versionDir);\n\t\t\t}\n\n\t\t\t// 写入版本信息文件\n\t\t\tconst content = JSON.stringify({ version: `v${version}`, dateTime }, null, 4);\n\t\t\tfs.writeFileSync(versionPath, content);\n\n\t\t\tconst pkgPath = path.join(config.base, \"package.json\");\n\t\t\tif (fs.existsSync(pkgPath)) {\n\t\t\t\tconst pkgJson = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n\t\t\t\tpkgJson.version = version;\n\t\t\t\tfs.writeFileSync(pkgPath, JSON.stringify(pkgJson, null, 2), \"utf-8\");\n\t\t\t}\n\t\t},\n\t};\n}\n\nexport { versionUpdatePlugin };\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,cAAAC,EAAA,gBAAAC,EAAA,2BAAAC,EAAA,wBAAAC,EAAA,2BAAAC,EAAA,iBAAAC,IAAA,eAAAC,EAAAT,GCAA,IAAAU,EAAe,mBACfC,EAAiB,qBAOXC,EAAeC,GAAoF,CAExG,IAAMC,EAAkF,CAAC,EAMzF,OAJiB,EAAAC,QAAG,YAAYF,EAAK,CACpC,cAAe,EAChB,CAAC,EAEQ,QAASG,GAAS,CAC1B,GAAIA,EAAK,YAAY,EACpBF,EAAY,KAAK,GAAGF,EAAY,EAAAK,QAAK,KAAKJ,EAAKG,EAAK,IAAI,CAAC,CAAC,MACpD,CACN,IAAME,EAAWF,EAAK,KAAK,QAAQ,OAAQ,EAAE,EAEvCG,EAAa,EAAAJ,QACjB,aAAa,EAAAE,QAAK,KAAKJ,EAAKG,EAAK,IAAI,EAAG,OAAO,EAC/C,QAAQ,eAAgB,EAAE,EAC1B,QAAQ,oBAAqB,EAAE,EAE/B,UAAU,EACV,QAAQ,EAER,QAAQ,kBAAmB,CAACI,EAAOC,IAAS,CAC5C,IAAMC,EAAeD,EAAK,MAAM,iBAAiB,EAC3CE,EAAaF,EAAK,MAAM,eAAe,EACvCG,EAAcH,EAAK,MAAM,gBAAgB,EAC3CI,EAAQ,KACRC,EAAS,KACTH,IACHE,EAAQF,EAAW,CAAC,GAEjBC,IACHE,EAASF,EAAY,CAAC,GAEvB,IAAIG,EAAiB,GACrB,OAAKL,EAGJK,EAAiBL,EAAa,CAAC,EAF/BK,EAAiB,gBAAgBF,CAAK,IAAIC,CAAM,IAI1C,2CAA2CC,CAAc,GACjE,CAAC,EAEFb,EAAY,KAAK,CAEhB,SAAAI,EACA,cAAeA,EAAS,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAS,MAAM,CAAC,EAClE,YAAaC,CACd,CAAC,CACF,CACD,CAAC,EAEML,EAAY,KAAK,CAACc,EAAGC,IACvBD,EAAE,SAAWC,EAAE,SACX,GAEJD,EAAE,SAAWC,EAAE,SACX,EAED,CACP,CACF,EAKMC,EAAe,CAACZ,EAAkBa,EAAuBC,EAAiBb,IAA6B,CAC5G,IAAMc,EAAS,EAAAhB,QAAK,KAAKe,EAAS,KAAK,EAEvC,EAAAjB,QAAG,UAAUiB,EAAS,CAAE,UAAW,EAAK,CAAC,EACzC,EAAAjB,QAAG,UAAUkB,EAAQ,CAAE,UAAW,EAAK,CAAC,EAExC,IAAMC,EAAc;AAAA;AAAA;AAAA,KAGhBH,CAAa;AAAA;AAAA;AAAA,UAGRA,CAAa;AAAA;AAAA;AAAA,EAGrBZ,EACA,MAAM;AAAA,CAAI,EACV,IAAKgB,GAAS,MAAMA,CAAI,EAAE,EAC1B,KAAK;AAAA,CAAI,CAAC;AAAA;AAAA;AAAA;AAAA,EAMX,EAAApB,QAAG,cAAc,EAAAE,QAAK,KAAKgB,EAAQ,GAAGf,CAAQ,MAAM,EAAGgB,CAAW,EAElE,IAAME,EAAe;AAAA,SACbL,CAAa,mBAAmBb,CAAQ;AAAA;AAAA,eAElCa,CAAa,kBAAkBA,CAAa;AAAA,iBAC1CA,CAAa;AAAA,EAG7B,EAAAhB,QAAG,cAAc,EAAAE,QAAK,KAAKe,EAAS,UAAU,EAAGI,CAAY,EAE7D,IAAMC,EAAW;AAAA,2BACSN,CAAa,qBAAqBb,CAAQ;AAAA;AAAA,uBAE9Ca,CAAa,2BAA2BA,CAAa;AAAA,iBAC3DA,CAAa;AAAA,EAG7B,EAAAhB,QAAG,cAAc,EAAAE,QAAK,KAAKe,EAAS,YAAY,EAAGK,CAAQ,CAC5D,EAOA,SAASC,EAAazB,EAAa0B,EAA0B,CAC5D,GAAI,CAAC1B,GAAO,CAAC0B,EAAU,OAEvB,IAAIC,EAEJ,MAAO,CACN,KAAM,kCACN,eAAiBC,GAAyD,CAEzED,EAASC,CACV,EACA,YAAmC,CAClC,IAAMC,EAAW9B,EAAY,EAAAK,QAAK,QAAQuB,EAAO,KAAM3B,CAAG,CAAC,EAErD8B,EAAY,EAAA1B,QAAK,QAAQuB,EAAO,KAAMD,CAAQ,EACpD,EAAAxB,QAAG,UAAU4B,EAAW,CAAE,UAAW,EAAK,CAAC,EAE3C,IAAIC,EAAoB,GACpBC,EAAkB,GAClBC,EAAgB,GAEpBJ,EAAS,QAAQ,CAACK,EAAKC,IAAQ,CAC9BlB,EAAaiB,EAAI,SAAUA,EAAI,cAAe,EAAA9B,QAAK,KAAK0B,EAAWI,EAAI,QAAQ,EAAGA,EAAI,WAAW,EAEjGH,GAAqB,YAAYG,EAAI,aAAa,cAAcA,EAAI,QAAQ;AAAA,EAG5EF,GAAmB,IAAIE,EAAI,QAAQ,IAEnCD,GAAiB,oBAAoBC,EAAI,QAAQ;AAAA,EAG7CC,EAAM,EAAIN,EAAS,SACtBG,GAAmB;AAAA,EAErB,CAAC,EAED,EAAA9B,QAAG,cACF,EAAAE,QAAK,KAAK0B,EAAW,UAAU,EAC/B;AAAA,EACFC,CAAiB;AAAA,EACjBE,CAAa;AAAA;AAAA,EAEbD,CAAe;AAAA;AAAA,CAGd,CACD,CACD,CACD,CC7KA,IAAAI,EAAe,mBACfC,EAAiB,qBACjBC,EAA4B,+CAE5BC,EAAoC,iCAG9BC,EAAQ,QAAQ,IAAI,WAAa,cAOvC,SAASC,EAAiBC,EAAsB,CAC/C,IAAMC,EAAM,QAAQ,IAAI,EAClBC,EAAU,EAAAC,QAAK,KAAKF,EAAK,eAAgBD,EAAM,cAAc,EACnE,OAAI,EAAAI,QAAG,WAAWF,CAAO,EACR,KAAK,MAAM,EAAAE,QAAG,aAAaF,EAAS,MAAM,CAAC,EAC5C,QAGT,EACR,CAOA,SAASG,EAAWF,EAAuB,CAC1C,MAAO,GAAAA,EAAK,WAAW,OAAO,GAAKA,EAAK,WAAW,QAAQ,GAAKA,EAAK,WAAW,IAAI,EACrF,CAEA,SAASG,EACRC,EACAC,EAKS,CACT,GAAM,CAAE,KAAAL,CAAK,EAAIK,EACjB,OAAIH,EAAWF,CAAI,IAClBI,EAAMJ,GAEAI,EACL,QAAQ,YAAaC,EAAK,IAAI,EAC9B,QAAQ,eAAgBA,EAAK,OAAO,EACpC,QAAQ,YAAaL,CAAI,CAC5B,CAEA,SAASM,EAAcC,EAAgBC,EAAuE,CAC7GA,EAAUD,EAAO,SAAWC,EAC5B,IAAMC,EAAIF,EACJG,EAAUH,EAAO,SAAWX,EAAiBa,EAAE,IAAI,EACrDE,EAAqB,CAAC,EACrB,MAAM,QAAQF,EAAE,IAAI,EAGxBE,EAAWF,EAAE,KAFbE,EAAS,KAAKF,EAAE,IAAI,EAKrB,IAAMJ,EAAO,CACZ,GAAGI,EACH,QAAAC,CACD,EAEAC,EAAWA,EAAS,IAAKC,GAAM,CAC9B,GAAI,CAACF,GAAW,CAACR,EAAWU,CAAC,EAC5B,MAAM,IAAI,MAAM,YAAYP,EAAK,IAAI,mCAAmC,EAEzE,OAAOF,EAAUK,EAAS,CACzB,KAAMH,EAAK,KACX,QAASA,EAAK,QACd,KAAMO,CACP,CAAC,CACF,CAAC,EAED,IAAIC,EAAMJ,EAAE,KAAO,CAAC,EAChB,CAAC,MAAM,QAAQI,CAAG,GAAKA,IAC1BA,EAAM,CAACA,CAAG,GAGX,IAAMC,EAAW,MAAM,QAAQD,CAAG,EAE/BA,EAAI,IAAKE,GACTZ,EAAUK,EAAS,CAClB,KAAMH,EAAK,KACX,QAASA,EAAK,QACd,KAAMU,CACP,CAAC,CACF,EAPC,CAAC,EASJ,MAAO,CACN,GAAGN,EACH,QAAAC,EACA,SAAAC,EACA,QAAAG,CACD,CACD,CAOA,SAASE,EAAUC,EAAqC,CACvD,GAAM,CAAE,QAAAC,EAAU,CAAC,EAAG,QAAAV,EAAU,uDAAwD,gBAAAW,EAAkB,EAAM,EAAIF,EAEhHG,EAAU,GAERf,GAAQ,MAAM,QAAQa,CAAO,EAAIA,EAAU,CAACA,CAAO,GACvD,IAAKT,GAAO,OAAOA,GAAM,WAAaA,EAAED,CAAO,EAAIC,CAAE,EACrD,IAAKA,GAAMH,EAAcG,EAAGD,CAAO,CAAC,EAEhCa,EAEF,CAAC,EAELhB,EAAK,QAASI,GAAM,CACnBY,EAAYZ,EAAE,IAAI,EAAIA,EAAE,IACpB,MAAM,QAAQA,EAAE,KAAK,GACxBA,EAAE,MAAM,QAASa,GAAU,CAC1BD,EAAYC,CAAK,EAAIb,EAAE,GACxB,CAAC,CAEH,CAAC,EAED,IAAMc,EAAoB,CACzB,CACC,KAAM,8BACN,QAAS,MACT,OAAOC,EAAG,CAAE,QAAAC,CAAQ,EAAe,CAClCL,EAAUK,IAAY,QAEtB,IAAMC,EAAyB,CAC9B,MAAO,CACN,cAAe,CACd,QAAS,CAAC,CACX,CACD,CACD,EAEA,OAAIN,IACHM,EAAW,MAAM,cAAc,QAAU,IAAC,EAAAC,SAAgBN,CAAW,CAAC,GAGhEK,CACR,EACA,mBAAmBE,EAAoC,CACtD,GAAI,CAACR,GAAW,CAACD,EAChB,OAAOS,EAGR,IAAMC,EAAmC,CAAC,EAE1C,OAAAxB,EAAK,QAASI,GAAM,CACnBA,EAAE,SAAS,QAASL,GAAQ,CAC3B,IAAM0B,EAAQ,CACb,IAAK1B,EACL,YAAa,YACb,GAAIK,GAAG,OAAS,CAAC,CAClB,EAEAoB,EAAY,KAAK,CAChB,IAAK,SACL,MAAAC,CACD,CAAC,CACF,CAAC,EACDrB,EAAE,QAAQ,QAASL,GAAQ,CAC1B,IAAM0B,EAAQ,CACb,KAAM1B,EACN,IAAK,aACL,YAAa,YACb,GAAIK,GAAG,OAAS,CAAC,CAClB,EACAoB,EAAY,KAAK,CAChB,IAAK,OACL,MAAAC,CACD,CAAC,CACF,CAAC,CACF,CAAC,EAEMD,CACR,CACD,CACD,EAEA,OAAIlC,GAASwB,GACZI,EAAQ,QACP,uBAAoBF,EAAa,CAChC,QAAS,KACV,CAAC,CACF,EAGME,CACR,CCtMA,IAAAQ,EAAe,mBACfC,EAAiB,qBASjB,SAASC,EAAuBC,EAA6C,CAC5E,GAAKA,EAEL,MAAO,CACN,KAAM,6CACN,YAAmC,CAClC,IAAMC,EAAM,OAAOD,GAAY,SAAWA,EAAUA,EAAQ,IAEtDE,EAAoBC,GAClBA,EAAM,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAM,MAAM,CAAC,EAG/CC,EAAY,OAAOJ,GAAY,SAAWE,EAAoBF,EAAQ,WAAaE,EAGnFG,EAAS,EAAAC,QAAG,YAAYL,EAAK,CAClC,cAAe,EAChB,CAAC,EAED,GAAII,GAAQ,SAAW,EAAG,OAG1B,IAAME,EAASF,EAEb,OAAQG,GAAMA,EAAE,OAAS,UAAU,EACnC,IAAKC,IACE,CACN,cAAeL,EAAUK,EAAK,IAAI,EAClC,SAAUA,EAAK,IAChB,EACA,EACA,KAAK,CAACC,EAAGC,IACLD,EAAE,cAAgBC,EAAE,cAChB,GAEJD,EAAE,cAAgBC,EAAE,cAChB,EAED,CACP,EAEEC,EAAgB,GAChBC,EAAgB,GAChBC,EAAc,GAElBP,EAAO,QAAQ,CAAC,CAAE,cAAAQ,EAAe,SAAAC,CAAS,EAAGC,IAAQ,CACpDL,GAAiB,YAAYG,CAAa,cAAcC,CAAQ;AAAA,EAGhEH,GAAiB,oBAAoBG,CAAQ;AAAA,EAG7CF,GAAe,IAAIC,CAAa,IAE5BE,EAAM,EAAIV,EAAO,SACpBO,GAAe;AAAA,EAEjB,CAAC,EAED,EAAAR,QAAG,cACF,EAAAY,QAAK,KAAKjB,EAAK,UAAU,EACzB;AAAA,EACFW,CAAa;AAAA,EACbC,CAAa;AAAA;AAAA,EAEbC,CAAW;AAAA;AAAA,CAGV,CACD,CACD,CACD,CAOA,SAASK,EAAuBnB,EAA6C,CAC5E,GAAKA,EAEL,MAAO,CACN,KAAM,6CACN,YAAmC,CAClC,IAAMC,EAAM,OAAOD,GAAY,SAAWA,EAAUA,EAAQ,IAEtDE,EAAoBC,GAClBA,EAAM,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAM,MAAM,CAAC,EAG/CC,EAAY,OAAOJ,GAAY,SAAWE,EAAoBF,EAAQ,WAAaE,EAGnFG,EAAS,EAAAC,QAAG,YAAYL,EAAK,CAClC,cAAe,EAChB,CAAC,EAED,GAAII,GAAQ,SAAW,EAAG,OAG1B,IAAME,EAASF,EAEb,OAAQG,GAAMA,EAAE,OAAS,UAAU,EACnC,IAAKC,IACE,CACN,cAAeL,EAAUK,EAAK,IAAI,EAClC,SAAUA,EAAK,IAChB,EACA,EACA,KAAK,CAACC,EAAGC,IACLD,EAAE,cAAgBC,EAAE,cAChB,GAEJD,EAAE,cAAgBC,EAAE,cAChB,EAED,CACP,EAEEC,EAAgB,GAChBC,EAAgB,GAChBC,EAAc,GAElBP,EAAO,QAAQ,CAAC,CAAE,cAAAQ,EAAe,SAAAC,CAAS,EAAGC,IAAQ,CACpDL,GAAiB,UAAUG,CAAa,YAAYC,CAAQ;AAAA,EAG5DH,GAAiB,oBAAoBG,CAAQ;AAAA,EAG7CF,GAAe,IAAIC,CAAa,IAE5BE,EAAM,EAAIV,EAAO,SACpBO,GAAe;AAAA,EAEjB,CAAC,EAED,EAAAR,QAAG,cACF,EAAAY,QAAK,KAAKjB,EAAK,UAAU,EACzB;AAAA,EACFW,CAAa;AAAA,EACbC,CAAa;AAAA;AAAA,EAEbC,CAAW;AAAA;AAAA,CAGV,CACD,CACD,CACD,CC/JA,IAAAM,EAAe,mBACfC,EAAiB,qBAGjB,SAASC,EAAQC,EAAaC,EAAS,EAAW,CACjD,OAAOD,EAAI,SAAS,EAAE,SAASC,EAAQ,GAAG,CAC3C,CAEA,SAASC,EAAWC,EAAoB,CACvC,IAAMC,EAAOD,EAAK,eAAe,EAC3BE,EAAQN,EAAQI,EAAK,YAAY,EAAI,CAAC,EACtCG,EAAMP,EAAQI,EAAK,WAAW,CAAC,EAC/BI,EAAQR,EAAQI,EAAK,YAAY,CAAC,EAClCK,EAAUT,EAAQI,EAAK,cAAc,CAAC,EACtCM,EAAUV,EAAQI,EAAK,cAAc,CAAC,EACtCO,EAAeX,EAAQI,EAAK,mBAAmB,EAAG,CAAC,EAEzD,MAAO,KAAKC,CAAI,IAAIC,CAAK,IAAIC,CAAG,IAAIC,CAAK,IAAIC,CAAO,IAAIC,CAAO,IAAIC,CAAY,EAChF,CAOA,SAASC,EAAoBC,EAAyB,CACrD,IAAIC,EAEJ,MAAO,CACN,KAAM,kCACN,eAAiBC,GAAyD,CAEzED,EAASC,CACV,EACA,YAAmC,CAGlC,IAAMC,EAAWb,EAFD,IAAI,IAEe,EAE7Bc,EAAaH,EAAO,UACpBI,EAAc,EAAAC,QAAK,KAAKF,EAAY,cAAc,EACnD,EAAAG,QAAG,WAAWH,CAAU,GAC5B,EAAAG,QAAG,UAAUH,CAAU,EAIxB,IAAMI,EAAU,KAAK,UAAU,CAAE,QAAS,IAAIR,CAAO,GAAI,SAAAG,CAAS,EAAG,KAAM,CAAC,EAC5E,EAAAI,QAAG,cAAcF,EAAaG,CAAO,EAErC,IAAMC,EAAU,EAAAH,QAAK,KAAKL,EAAO,KAAM,cAAc,EACrD,GAAI,EAAAM,QAAG,WAAWE,CAAO,EAAG,CAC3B,IAAMC,EAAU,KAAK,MAAM,EAAAH,QAAG,aAAaE,EAAS,OAAO,CAAC,EAC5DC,EAAQ,QAAUV,EAClB,EAAAO,QAAG,cAAcE,EAAS,KAAK,UAAUC,EAAS,KAAM,CAAC,EAAG,OAAO,CACpE,CACD,CACD,CACD","names":["packages_exports","__export","buildSvgIcon","cdnImport","findSvgFile","tsxComponentAutoImport","versionUpdatePlugin","vueComponentAutoImport","writeTSXIcon","__toCommonJS","import_fs","import_path","findSvgFile","dir","svgContents","fs","file","path","iconName","svgContent","match","attr","viewBoxMatch","widthMatch","heightMatch","width","height","viewBoxContent","a","b","writeTSXIcon","componentName","iconDir","srcDir","iconContent","line","indexContent","indexDTS","buildSvgIcon","writeDir","config","resolvedConfig","svgFiles","iconsPath","iconImportContent","iconTypeContent","exportContent","svg","idx","import_fs","import_path","import_rollup_plugin_external_globals","import_vite_plugin_externals","isDev","getModuleVersion","name","pwd","pkgFile","path","fs","isFullPath","renderUrl","url","data","getModuleInfo","module","prodUrl","v","version","pathList","p","css","cssList","c","cdnImport","options","modules","enableInDevMode","isBuild","externalMap","alias","plugins","_","command","userConfig","externalGlobals","html","descriptors","attrs","import_fs","import_path","tsxComponentAutoImport","options","dir","defaultFormatter","fName","formatter","cFiles","fs","cNames","f","file","a","b","importContent","exportContent","typeContent","componentName","fileName","idx","path","vueComponentAutoImport","import_fs","import_path","padZero","num","length","formatDate","date","year","month","day","hours","minutes","seconds","milliseconds","versionUpdatePlugin","version","config","resolvedConfig","dateTime","versionDir","versionPath","path","fs","content","pkgPath","pkgJson"]}
package/dist/index.js CHANGED
@@ -1,79 +1,54 @@
1
- import f from"fs";import l from"path";var x=t=>{let n=[];return f.readdirSync(t,{withFileTypes:!0}).forEach(s=>{if(s.isDirectory())n.push(...x(l.join(t,s.name)));else{let i=s.name.replace(".svg",""),a=f.readFileSync(l.join(t,s.name),"utf-8").replace(/<\?xml.*?\?>/,"").replace(/<!DOCTYPE svg.*?>/,"").trimStart().trimEnd().replace(/<svg([^>+].*?)>/,(c,p)=>{let r=p.match(/viewBox="[^"]+"/),e=p.match(/width="(\d+)"/),m=p.match(/height="(\d+)"/),u=1024,g=1024;e&&(u=e[0]),m&&(g=m[0]);let y="";return r?y=r[0]:y=`viewBox="0 0 ${u} ${g}"`,`<svg xmlns="http://www.w3.org/2000/svg" ${y}>`});n.push({iconName:i,componentName:i.charAt(0).toUpperCase()+i.slice(1),iconContent:a})}}),n.sort((s,i)=>s.iconName<i.iconName?-1:s.iconName>i.iconName?1:0)},P=(t,n,o,s)=>{let i=l.join(o,"src");f.mkdirSync(o,{recursive:!0}),f.mkdirSync(i,{recursive:!0});let a=`import { defineComponent } from "vue";
2
- import { ElIcon } from "element-plus";
1
+ import f from"fs";import u from"path";var x=t=>{let e=[];return f.readdirSync(t,{withFileTypes:!0}).forEach(s=>{if(s.isDirectory())e.push(...x(u.join(t,s.name)));else{let i=s.name.replace(".svg",""),c=f.readFileSync(u.join(t,s.name),"utf-8").replace(/<\?xml.*?\?>/,"").replace(/<!DOCTYPE svg.*?>/,"").trimStart().trimEnd().replace(/<svg([^>+].*?)>/,(a,p)=>{let n=p.match(/viewBox="[^"]+"/),r=p.match(/width="(\d+)"/),m=p.match(/height="(\d+)"/),l=1024,g=1024;r&&(l=r[0]),m&&(g=m[0]);let y="";return n?y=n[0]:y=`viewBox="0 0 ${l} ${g}"`,`<svg xmlns="http://www.w3.org/2000/svg" ${y}>`});e.push({iconName:i,componentName:i.charAt(0).toUpperCase()+i.slice(1),iconContent:c})}}),e.sort((s,i)=>s.iconName<i.iconName?-1:s.iconName>i.iconName?1:0)},F=(t,e,o,s)=>{let i=u.join(o,"src");f.mkdirSync(o,{recursive:!0}),f.mkdirSync(i,{recursive:!0});let c=`import { defineComponent } from "vue";
3
2
 
4
3
  /**
5
- * ${n} \u56FE\u6807\u7EC4\u4EF6
4
+ * ${e} \u56FE\u6807\u7EC4\u4EF6
6
5
  */
7
6
  export default defineComponent({
8
- name: "${n}",
9
- components: {
10
- ElIcon,
11
- },
12
- setup(_, { attrs }) {
13
- return {
14
- attrs,
15
- };
16
- },
7
+ name: "${e}",
17
8
  render() {
18
9
  return (
19
- <ElIcon {...this.attrs} class="fa-icon fa-icon-${n} icon">
20
10
  ${s.split(`
21
- `).map(r=>` ${r}`).join(`
11
+ `).map(n=>` ${n}`).join(`
22
12
  `)}
23
- </ElIcon>
24
13
  );
25
14
  },
26
15
  });
27
- `;f.writeFileSync(l.join(i,`${t}.tsx`),a);let c=`import { withInstall } from "fast-element-plus";
28
- import ${n}TSX from "./src/${t}.tsx";
16
+ `;f.writeFileSync(u.join(i,`${t}.tsx`),c);let a=`import { withInstall } from "fast-element-plus";
17
+ import ${e}TSX from "./src/${t}.tsx";
29
18
 
30
- export const ${n} = withInstall(${n}TSX);
31
- export default ${n};
32
- `;f.writeFileSync(l.join(o,"index.ts"),c);let p=`import type { TSXWithInstall } from "fast-element-plus";
33
- import type { default as ${n}TSX } from "./src/${t}";
19
+ export const ${e} = withInstall(${e}TSX);
20
+ export default ${e};
21
+ `;f.writeFileSync(u.join(o,"index.ts"),a);let p=`import type { TSXWithInstall } from "fast-element-plus";
22
+ import type { default as ${e}TSX } from "./src/${t}";
34
23
 
35
- export declare const ${n}: TSXWithInstall<typeof ${n}TSX>;
36
- export default ${n};
37
- `;f.writeFileSync(l.join(o,"index.d.ts"),p)};function U(t,n){if(!t||!n)return;let o;return{name:"fast-vite-plugin-build-svg-icon",configResolved:s=>{o=s},buildStart(){let s=x(l.resolve(o.root,t)),i=l.resolve(o.root,n);f.mkdirSync(i,{recursive:!0});let a="",c="",p="",r="";s.forEach((e,m)=>{P(e.iconName,e.componentName,l.join(i,e.iconName),e.iconContent),a+=`import { ${e.componentName} } from "./${e.iconName}";
38
- `,c+=` ${e.iconName},`,p+=`export * from "./${e.iconName}";
39
- `,r+=` ${e.componentName}: (typeof import("./"))["${e.componentName}"];`,m+1<s.length&&(r+=`
40
- `,c+=`
41
- `)}),f.writeFileSync(l.join(i,"index.ts"),`import type { DefineComponent } from "vue";
42
- ${a}
24
+ export declare const ${e}: TSXWithInstall<typeof ${e}TSX>;
25
+ export default ${e};
26
+ `;f.writeFileSync(u.join(o,"index.d.ts"),p)};function M(t,e){if(!t||!e)return;let o;return{name:"fast-vite-plugin-build-svg-icon",configResolved:s=>{o=s},buildStart(){let s=x(u.resolve(o.root,t)),i=u.resolve(o.root,e);f.mkdirSync(i,{recursive:!0});let c="",a="",p="";s.forEach((n,r)=>{F(n.iconName,n.componentName,u.join(i,n.iconName),n.iconContent),c+=`import { ${n.componentName} } from "./${n.iconName}";
27
+ `,a+=` ${n.iconName},`,p+=`export * from "./${n.iconName}";
28
+ `,r+1<s.length&&(a+=`
29
+ `)}),f.writeFileSync(u.join(i,"index.ts"),`import type { DefineComponent } from "vue";
30
+ ${c}
43
31
  ${p}
44
32
  export default [
45
- ${c}
33
+ ${a}
46
34
  ] as Plugin[];
47
- `),f.writeFileSync(l.join(i,"index.d.ts"),`// For this project development
48
- import "@vue/runtime-core";
49
-
50
- // GlobalComponents for Volar
51
- declare module "@vue/runtime-core" {
52
- export interface GlobalComponents {
53
- ${r}
54
- }
55
-
56
- // interface ComponentCustomProperties {}
57
- }
58
-
59
- export {};
60
- `)}}}import C from"fs";import T from"path";import I from"rollup-plugin-external-globals";import{viteExternalsPlugin as j}from"vite-plugin-externals";var N=process.env.NODE_ENV==="development";function E(t){let n=process.cwd(),o=T.join(n,"node_modules",t,"package.json");return C.existsSync(o)?JSON.parse(C.readFileSync(o,"utf8")).version:""}function S(t){return!!(t.startsWith("http:")||t.startsWith("https:")||t.startsWith("//"))}function $(t,n){let{path:o}=n;return S(o)&&(t=o),t.replace(/\{name\}/g,n.name).replace(/\{version\}/g,n.version).replace(/\{path\}/g,o)}function A(t,n){n=t.prodUrl||n;let o=t,s=t.version||E(o.name),i=[];Array.isArray(o.path)?i=o.path:i.push(o.path);let a={...o,version:s};i=i.map(r=>{if(!s&&!S(r))throw new Error(`modules: ${a.name} package.json file does not exist`);return $(n,{name:a.name,version:a.version,path:r})});let c=o.css||[];!Array.isArray(c)&&c&&(c=[c]);let p=Array.isArray(c)?c.map(r=>$(n,{name:a.name,version:a.version,path:r})):[];return{...o,version:s,pathList:i,cssList:p}}function L(t){let{modules:n=[],prodUrl:o="https://cdn.jsdelivr.net/npm/{name}@{version}/{path}",enableInDevMode:s=!1}=t,i=!1,a=(Array.isArray(n)?n:[n]).map(r=>typeof r=="function"?r(o):r).map(r=>A(r,o)),c={};a.forEach(r=>{c[r.name]=r.var,Array.isArray(r.alias)&&r.alias.forEach(e=>{c[e]=r.var})});let p=[{name:"fast-vite-plugin-cdn-import",enforce:"pre",config(r,{command:e}){i=e==="build";let m={build:{rollupOptions:{plugins:[]}}};return i&&(m.build.rollupOptions.plugins=[I(c)]),m},transformIndexHtml(r){if(!i&&!s)return r;let e=[];return a.forEach(m=>{m.pathList.forEach(u=>{let g={src:u,crossorigin:"anonymous",...m?.attrs??{}};e.push({tag:"script",attrs:g})}),m.cssList.forEach(u=>{let g={href:u,rel:"stylesheet",crossorigin:"anonymous",...m?.attrs??{}};e.push({tag:"link",attrs:g})})}),e}}];return N&&s&&p.push(j(c,{enforce:"pre"})),p}import v from"fs";import w from"path";function _(t){if(t)return{name:"fast-vite-plugin-tsx-component-auto-import",buildStart(){let n=typeof t=="string"?t:t.dir,o=e=>e.charAt(0).toUpperCase()+e.slice(1),s=typeof t=="string"?o:t.formatter??o,i=v.readdirSync(n,{withFileTypes:!0});if(i?.length===0)return;let a=i.filter(e=>e.name!=="index.ts").map(e=>({componentName:s(e.name),fileName:e.name})).sort((e,m)=>e.componentName<m.componentName?-1:e.componentName>m.componentName?1:0),c="",p="",r="";a.forEach(({componentName:e,fileName:m},u)=>{c+=`import { ${e} } from "./${m}";
35
+ `)}}}import C from"fs";import T from"path";import N from"rollup-plugin-external-globals";import{viteExternalsPlugin as j}from"vite-plugin-externals";var A=process.env.NODE_ENV==="development";function I(t){let e=process.cwd(),o=T.join(e,"node_modules",t,"package.json");return C.existsSync(o)?JSON.parse(C.readFileSync(o,"utf8")).version:""}function S(t){return!!(t.startsWith("http:")||t.startsWith("https:")||t.startsWith("//"))}function $(t,e){let{path:o}=e;return S(o)&&(t=o),t.replace(/\{name\}/g,e.name).replace(/\{version\}/g,e.version).replace(/\{path\}/g,o)}function D(t,e){e=t.prodUrl||e;let o=t,s=t.version||I(o.name),i=[];Array.isArray(o.path)?i=o.path:i.push(o.path);let c={...o,version:s};i=i.map(n=>{if(!s&&!S(n))throw new Error(`modules: ${c.name} package.json file does not exist`);return $(e,{name:c.name,version:c.version,path:n})});let a=o.css||[];!Array.isArray(a)&&a&&(a=[a]);let p=Array.isArray(a)?a.map(n=>$(e,{name:c.name,version:c.version,path:n})):[];return{...o,version:s,pathList:i,cssList:p}}function L(t){let{modules:e=[],prodUrl:o="https://cdn.jsdelivr.net/npm/{name}@{version}/{path}",enableInDevMode:s=!1}=t,i=!1,c=(Array.isArray(e)?e:[e]).map(n=>typeof n=="function"?n(o):n).map(n=>D(n,o)),a={};c.forEach(n=>{a[n.name]=n.var,Array.isArray(n.alias)&&n.alias.forEach(r=>{a[r]=n.var})});let p=[{name:"fast-vite-plugin-cdn-import",enforce:"pre",config(n,{command:r}){i=r==="build";let m={build:{rollupOptions:{plugins:[]}}};return i&&(m.build.rollupOptions.plugins=[N(a)]),m},transformIndexHtml(n){if(!i&&!s)return n;let r=[];return c.forEach(m=>{m.pathList.forEach(l=>{let g={src:l,crossorigin:"anonymous",...m?.attrs??{}};r.push({tag:"script",attrs:g})}),m.cssList.forEach(l=>{let g={href:l,rel:"stylesheet",crossorigin:"anonymous",...m?.attrs??{}};r.push({tag:"link",attrs:g})})}),r}}];return A&&s&&p.push(j(a,{enforce:"pre"})),p}import v from"fs";import w from"path";function _(t){if(t)return{name:"fast-vite-plugin-tsx-component-auto-import",buildStart(){let e=typeof t=="string"?t:t.dir,o=r=>r.charAt(0).toUpperCase()+r.slice(1),s=typeof t=="string"?o:t.formatter??o,i=v.readdirSync(e,{withFileTypes:!0});if(i?.length===0)return;let c=i.filter(r=>r.name!=="index.ts").map(r=>({componentName:s(r.name),fileName:r.name})).sort((r,m)=>r.componentName<m.componentName?-1:r.componentName>m.componentName?1:0),a="",p="",n="";c.forEach(({componentName:r,fileName:m},l)=>{a+=`import { ${r} } from "./${m}";
61
36
  `,p+=`export * from "./${m}";
62
- `,r+=` ${e},`,u+1<a.length&&(r+=`
63
- `)}),v.writeFileSync(w.join(n,"index.ts"),`import type { Plugin } from "vue";
64
- ${c}
37
+ `,n+=` ${r},`,l+1<c.length&&(n+=`
38
+ `)}),v.writeFileSync(w.join(e,"index.ts"),`import type { Plugin } from "vue";
39
+ ${a}
65
40
  ${p}
66
41
  export default [
67
- ${r}
42
+ ${n}
68
43
  ] as Plugin[];
69
- `)}}}function G(t){if(t)return{name:"fast-vite-plugin-vue-component-auto-import",buildStart(){let n=typeof t=="string"?t:t.dir,o=e=>e.charAt(0).toUpperCase()+e.slice(1),s=typeof t=="string"?o:t.formatter??o,i=v.readdirSync(n,{withFileTypes:!0});if(i?.length===0)return;let a=i.filter(e=>e.name!=="index.ts").map(e=>({componentName:s(e.name),fileName:e.name})).sort((e,m)=>e.componentName<m.componentName?-1:e.componentName>m.componentName?1:0),c="",p="",r="";a.forEach(({componentName:e,fileName:m},u)=>{c+=`import ${e} from "./${m}/index.vue";
44
+ `)}}}function V(t){if(t)return{name:"fast-vite-plugin-vue-component-auto-import",buildStart(){let e=typeof t=="string"?t:t.dir,o=r=>r.charAt(0).toUpperCase()+r.slice(1),s=typeof t=="string"?o:t.formatter??o,i=v.readdirSync(e,{withFileTypes:!0});if(i?.length===0)return;let c=i.filter(r=>r.name!=="index.ts").map(r=>({componentName:s(r.name),fileName:r.name})).sort((r,m)=>r.componentName<m.componentName?-1:r.componentName>m.componentName?1:0),a="",p="",n="";c.forEach(({componentName:r,fileName:m},l)=>{a+=`import ${r} from "./${m}/index.vue";
70
45
  `,p+=`export * from "./${m}/index.vue";
71
- `,r+=` ${e},`,u+1<a.length&&(r+=`
72
- `)}),v.writeFileSync(w.join(n,"index.ts"),`import type { DefineComponent } from "vue";
73
- ${c}
46
+ `,n+=` ${r},`,l+1<c.length&&(n+=`
47
+ `)}),v.writeFileSync(w.join(e,"index.ts"),`import type { DefineComponent } from "vue";
48
+ ${a}
74
49
  ${p}
75
50
  export default [
76
- ${r}
51
+ ${n}
77
52
  ] as unknown as DefineComponent[];
78
- `)}}}import d from"fs";import F from"path";function h(t,n=2){return t.toString().padStart(n,"0")}function D(t){let n=t.getUTCFullYear(),o=h(t.getUTCMonth()+1),s=h(t.getUTCDate()),i=h(t.getUTCHours()),a=h(t.getUTCMinutes()),c=h(t.getUTCSeconds()),p=h(t.getUTCMilliseconds(),3);return`Z ${n}-${o}-${s} ${i}:${a}:${c}.${p}`}function q(t){let n;return{name:"fast-vite-plugin-version-update",configResolved:o=>{n=o},buildStart(){let s=D(new Date),i=n.publicDir,a=F.join(i,"version.json");d.existsSync(i)||d.mkdirSync(i);let c=JSON.stringify({version:`v${t}`,dateTime:s},null,4);d.writeFileSync(a,c);let p=F.join(n.base,"package.json");if(d.existsSync(p)){let r=JSON.parse(d.readFileSync(p,"utf-8"));r.version=t,d.writeFileSync(p,JSON.stringify(r,null,2),"utf-8")}}}}export{U as buildSvgIcon,L as cdnImport,x as findSvgFile,_ as tsxComponentAutoImport,q as versionUpdatePlugin,G as vueComponentAutoImport,P as writeTSXIcon};
53
+ `)}}}import d from"fs";import P from"path";function h(t,e=2){return t.toString().padStart(e,"0")}function E(t){let e=t.getUTCFullYear(),o=h(t.getUTCMonth()+1),s=h(t.getUTCDate()),i=h(t.getUTCHours()),c=h(t.getUTCMinutes()),a=h(t.getUTCSeconds()),p=h(t.getUTCMilliseconds(),3);return`Z ${e}-${o}-${s} ${i}:${c}:${a}.${p}`}function q(t){let e;return{name:"fast-vite-plugin-version-update",configResolved:o=>{e=o},buildStart(){let s=E(new Date),i=e.publicDir,c=P.join(i,"version.json");d.existsSync(i)||d.mkdirSync(i);let a=JSON.stringify({version:`v${t}`,dateTime:s},null,4);d.writeFileSync(c,a);let p=P.join(e.base,"package.json");if(d.existsSync(p)){let n=JSON.parse(d.readFileSync(p,"utf-8"));n.version=t,d.writeFileSync(p,JSON.stringify(n,null,2),"utf-8")}}}}export{M as buildSvgIcon,L as cdnImport,x as findSvgFile,_ as tsxComponentAutoImport,q as versionUpdatePlugin,V as vueComponentAutoImport,F as writeTSXIcon};
79
54
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../packages/buildSvgIcon/index.ts","../../packages/cdnImport/index.ts","../../packages/componentAutoImport/index.ts","../../packages/versionUpdate/index.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport type { Plugin, ResolvedConfig } from \"vite\";\n\n/**\n * 查找 svg 文件\n */\n\nconst findSvgFile = (dir: string): { iconName: string; componentName: string; iconContent: string }[] => {\n\t// svg 内容\n\tconst svgContents: { iconName: string; componentName: string; iconContent: string }[] = [];\n\t// 获取当前目录下的文件\n\tconst svgFiles = fs.readdirSync(dir, {\n\t\twithFileTypes: true,\n\t});\n\n\tsvgFiles.forEach((file) => {\n\t\tif (file.isDirectory()) {\n\t\t\tsvgContents.push(...findSvgFile(path.join(dir, file.name)));\n\t\t} else {\n\t\t\tconst iconName = file.name.replace(\".svg\", \"\");\n\n\t\t\tconst svgContent = fs\n\t\t\t\t.readFileSync(path.join(dir, file.name), \"utf-8\")\n\t\t\t\t.replace(/<\\?xml.*?\\?>/, \"\")\n\t\t\t\t.replace(/<!DOCTYPE svg.*?>/, \"\")\n\t\t\t\t// .replace(/(\\r)|(\\n)/g, \"\")\n\t\t\t\t.trimStart()\n\t\t\t\t.trimEnd()\n\t\t\t\t// .replace(/(fill=\"[^>+].*?\")/g, 'fill=\"\"')\n\t\t\t\t.replace(/<svg([^>+].*?)>/, (match, attr) => {\n\t\t\t\t\tconst viewBoxMatch = attr.match(/viewBox=\"[^\"]+\"/);\n\t\t\t\t\tconst widthMatch = attr.match(/width=\"(\\d+)\"/);\n\t\t\t\t\tconst heightMatch = attr.match(/height=\"(\\d+)\"/);\n\t\t\t\t\tlet width = 1024;\n\t\t\t\t\tlet height = 1024;\n\t\t\t\t\tif (widthMatch) {\n\t\t\t\t\t\twidth = widthMatch[0];\n\t\t\t\t\t}\n\t\t\t\t\tif (heightMatch) {\n\t\t\t\t\t\theight = heightMatch[0];\n\t\t\t\t\t}\n\t\t\t\t\tlet viewBoxContent = \"\";\n\t\t\t\t\tif (!viewBoxMatch) {\n\t\t\t\t\t\tviewBoxContent = `viewBox=\"0 0 ${width} ${height}\"`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tviewBoxContent = viewBoxMatch[0];\n\t\t\t\t\t}\n\t\t\t\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" ${viewBoxContent}>`;\n\t\t\t\t});\n\n\t\t\tsvgContents.push({\n\t\t\t\t// iconName: iconName.charAt(0).toUpperCase() + iconName.slice(1),\n\t\t\t\ticonName,\n\t\t\t\tcomponentName: iconName.charAt(0).toUpperCase() + iconName.slice(1),\n\t\t\t\ticonContent: svgContent,\n\t\t\t});\n\t\t}\n\t});\n\n\treturn svgContents.sort((a, b) => {\n\t\tif (a.iconName < b.iconName) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (a.iconName > b.iconName) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t});\n};\n\n/**\n * 写入 TSX 图标\n */\nconst writeTSXIcon = (iconName: string, componentName: string, iconDir: string, svgContent: string): void => {\n\tconst srcDir = path.join(iconDir, \"src\");\n\n\tfs.mkdirSync(iconDir, { recursive: true });\n\tfs.mkdirSync(srcDir, { recursive: true });\n\n\tconst iconContent = `import { defineComponent } from \"vue\";\nimport { ElIcon } from \"element-plus\";\n\n/**\n * ${componentName} 图标组件\n */\nexport default defineComponent({\n\tname: \"${componentName}\",\n\tcomponents: {\n\t\tElIcon,\n\t},\n\tsetup(_, { attrs }) {\n\t\treturn {\n\t\t\tattrs,\n\t\t};\n\t},\n\trender() {\n\t\treturn (\n\t\t\t<ElIcon {...this.attrs} class=\"fa-icon fa-icon-${componentName} icon\">\n${svgContent\n\t.split(\"\\n\")\n\t.map((line) => `\t\t\t\t${line}`)\n\t.join(\"\\n\")}\n\t\t\t</ElIcon>\n\t\t);\n\t},\n});\n`;\n\n\tfs.writeFileSync(path.join(srcDir, `${iconName}.tsx`), iconContent);\n\n\tconst indexContent = `import { withInstall } from \"fast-element-plus\";\nimport ${componentName}TSX from \"./src/${iconName}.tsx\";\n\nexport const ${componentName} = withInstall(${componentName}TSX);\nexport default ${componentName};\n`;\n\n\tfs.writeFileSync(path.join(iconDir, \"index.ts\"), indexContent);\n\n\tconst indexDTS = `import type { TSXWithInstall } from \"fast-element-plus\";\nimport type { default as ${componentName}TSX } from \"./src/${iconName}\";\n\nexport declare const ${componentName}: TSXWithInstall<typeof ${componentName}TSX>;\nexport default ${componentName};\n`;\n\n\tfs.writeFileSync(path.join(iconDir, \"index.d.ts\"), indexDTS);\n};\n\n/**\n * 构建 svg 图标组件\n * @param dir svg 文件路径\n * @param writeDir 写入的文件路径 相对的即可\n */\nfunction buildSvgIcon(dir: string, writeDir: string): Plugin {\n\tif (!dir || !writeDir) return;\n\n\tlet config: ResolvedConfig;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-build-svg-icon\",\n\t\tconfigResolved: (resolvedConfig: ResolvedConfig): void | Promise<void> => {\n\t\t\t// 存储最终解析的配置\n\t\t\tconfig = resolvedConfig;\n\t\t},\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst svgFiles = findSvgFile(path.resolve(config.root, dir));\n\n\t\t\tconst iconsPath = path.resolve(config.root, writeDir);\n\t\t\tfs.mkdirSync(iconsPath, { recursive: true });\n\n\t\t\tlet iconImportContent = \"\";\n\t\t\tlet iconTypeContent = \"\";\n\t\t\tlet exportContent = \"\";\n\t\t\tlet typeDTSContent = \"\";\n\n\t\t\tsvgFiles.forEach((svg, idx) => {\n\t\t\t\twriteTSXIcon(svg.iconName, svg.componentName, path.join(iconsPath, svg.iconName), svg.iconContent);\n\n\t\t\t\ticonImportContent += `import { ${svg.componentName} } from \"./${svg.iconName}\";\n`;\n\n\t\t\t\ticonTypeContent += `\t${svg.iconName},`;\n\n\t\t\t\texportContent += `export * from \"./${svg.iconName}\";\n`;\n\n\t\t\t\ttypeDTSContent += `\t\t${svg.componentName}: (typeof import(\"./\"))[\"${svg.componentName}\"];`;\n\n\t\t\t\tif (idx + 1 < svgFiles.length) {\n\t\t\t\t\ttypeDTSContent += \"\\n\";\n\t\t\t\t\ticonTypeContent += \"\\n\";\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfs.writeFileSync(\n\t\t\t\tpath.join(iconsPath, \"index.ts\"),\n\t\t\t\t`import type { DefineComponent } from \"vue\";\n${iconImportContent}\n${exportContent}\nexport default [\n${iconTypeContent}\n] as Plugin[];\n`\n\t\t\t);\n\n\t\t\tfs.writeFileSync(\n\t\t\t\tpath.join(iconsPath, \"index.d.ts\"),\n\t\t\t\t`// For this project development\nimport \"@vue/runtime-core\";\n\n// GlobalComponents for Volar\ndeclare module \"@vue/runtime-core\" {\n\texport interface GlobalComponents {\n${typeDTSContent}\n\t}\n\n\t// interface ComponentCustomProperties {}\n}\n\nexport {};\n`\n\t\t\t);\n\t\t},\n\t};\n}\n\nexport { findSvgFile, writeTSXIcon, buildSvgIcon };\n","import fs from \"fs\";\nimport path from \"path\";\nimport externalGlobals from \"rollup-plugin-external-globals\";\nimport type { HtmlTagDescriptor, Plugin, UserConfig } from \"vite\";\nimport { viteExternalsPlugin } from \"vite-plugin-externals\";\nimport type { CdnImportOptions, Module } from \"./type\";\n\nconst isDev = process.env.NODE_ENV === \"development\";\n\n/**\n * get npm module version\n * @param name\n * @returns\n */\nfunction getModuleVersion(name: string): string {\n\tconst pwd = process.cwd();\n\tconst pkgFile = path.join(pwd, \"node_modules\", name, \"package.json\");\n\tif (fs.existsSync(pkgFile)) {\n\t\tconst pkgJson = JSON.parse(fs.readFileSync(pkgFile, \"utf8\"));\n\t\treturn pkgJson.version;\n\t}\n\n\treturn \"\";\n}\n\n/**\n * 是否完整的 url\n * @param path\n * @returns\n */\nfunction isFullPath(path: string): boolean {\n\treturn path.startsWith(\"http:\") || path.startsWith(\"https:\") || path.startsWith(\"//\") ? true : false;\n}\n\nfunction renderUrl(\n\turl: string,\n\tdata: {\n\t\tname: string;\n\t\tversion: string;\n\t\tpath: string;\n\t}\n): string {\n\tconst { path } = data;\n\tif (isFullPath(path)) {\n\t\turl = path;\n\t}\n\treturn url\n\t\t.replace(/\\{name\\}/g, data.name)\n\t\t.replace(/\\{version\\}/g, data.version)\n\t\t.replace(/\\{path\\}/g, path);\n}\n\nfunction getModuleInfo(module: Module, prodUrl: string): Module & { pathList?: string[]; cssList?: string[] } {\n\tprodUrl = module.prodUrl || prodUrl;\n\tconst v = module;\n\tconst version = module.version || getModuleVersion(v.name);\n\tlet pathList: string[] = [];\n\tif (!Array.isArray(v.path)) {\n\t\tpathList.push(v.path);\n\t} else {\n\t\tpathList = v.path;\n\t}\n\n\tconst data = {\n\t\t...v,\n\t\tversion,\n\t};\n\n\tpathList = pathList.map((p) => {\n\t\tif (!version && !isFullPath(p)) {\n\t\t\tthrow new Error(`modules: ${data.name} package.json file does not exist`);\n\t\t}\n\t\treturn renderUrl(prodUrl, {\n\t\t\tname: data.name,\n\t\t\tversion: data.version,\n\t\t\tpath: p,\n\t\t});\n\t});\n\n\tlet css = v.css || [];\n\tif (!Array.isArray(css) && css) {\n\t\tcss = [css];\n\t}\n\n\tconst cssList = !Array.isArray(css)\n\t\t? []\n\t\t: css.map((c) =>\n\t\t\t\trenderUrl(prodUrl, {\n\t\t\t\t\tname: data.name,\n\t\t\t\t\tversion: data.version,\n\t\t\t\t\tpath: c,\n\t\t\t\t})\n\t\t\t);\n\n\treturn {\n\t\t...v,\n\t\tversion,\n\t\tpathList,\n\t\tcssList,\n\t};\n}\n\n/**\n * CDN 导入\n * @param options\n * @returns\n */\nfunction cdnImport(options: CdnImportOptions): Plugin[] {\n\tconst { modules = [], prodUrl = \"https://cdn.jsdelivr.net/npm/{name}@{version}/{path}\", enableInDevMode = false } = options;\n\n\tlet isBuild = false;\n\n\tconst data = (Array.isArray(modules) ? modules : [modules])\n\t\t.map((v) => (typeof v === \"function\" ? v(prodUrl) : v))\n\t\t.map((v) => getModuleInfo(v, prodUrl));\n\n\tconst externalMap: {\n\t\t[name: string]: string;\n\t} = {};\n\n\tdata.forEach((v) => {\n\t\texternalMap[v.name] = v.var;\n\t\tif (Array.isArray(v.alias)) {\n\t\t\tv.alias.forEach((alias) => {\n\t\t\t\texternalMap[alias] = v.var;\n\t\t\t});\n\t\t}\n\t});\n\n\tconst plugins: Plugin[] = [\n\t\t{\n\t\t\tname: \"fast-vite-plugin-cdn-import\",\n\t\t\tenforce: \"pre\",\n\t\t\tconfig(_, { command }): UserConfig {\n\t\t\t\tisBuild = command === \"build\";\n\n\t\t\t\tconst userConfig: UserConfig = {\n\t\t\t\t\tbuild: {\n\t\t\t\t\t\trollupOptions: {\n\t\t\t\t\t\t\tplugins: [],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tif (isBuild) {\n\t\t\t\t\tuserConfig.build.rollupOptions.plugins = [externalGlobals(externalMap)];\n\t\t\t\t}\n\n\t\t\t\treturn userConfig;\n\t\t\t},\n\t\t\ttransformIndexHtml(html): string | HtmlTagDescriptor[] {\n\t\t\t\tif (!isBuild && !enableInDevMode) {\n\t\t\t\t\treturn html;\n\t\t\t\t}\n\n\t\t\t\tconst descriptors: HtmlTagDescriptor[] = [];\n\n\t\t\t\tdata.forEach((v) => {\n\t\t\t\t\tv.pathList.forEach((url) => {\n\t\t\t\t\t\tconst attrs = {\n\t\t\t\t\t\t\tsrc: url,\n\t\t\t\t\t\t\tcrossorigin: \"anonymous\",\n\t\t\t\t\t\t\t...(v?.attrs ?? {}),\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tdescriptors.push({\n\t\t\t\t\t\t\ttag: \"script\",\n\t\t\t\t\t\t\tattrs,\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\tv.cssList.forEach((url) => {\n\t\t\t\t\t\tconst attrs = {\n\t\t\t\t\t\t\thref: url,\n\t\t\t\t\t\t\trel: \"stylesheet\",\n\t\t\t\t\t\t\tcrossorigin: \"anonymous\",\n\t\t\t\t\t\t\t...(v?.attrs ?? {}),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tdescriptors.push({\n\t\t\t\t\t\t\ttag: \"link\",\n\t\t\t\t\t\t\tattrs,\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\treturn descriptors;\n\t\t\t},\n\t\t},\n\t];\n\n\tif (isDev && enableInDevMode) {\n\t\tplugins.push(\n\t\t\tviteExternalsPlugin(externalMap, {\n\t\t\t\tenforce: \"pre\",\n\t\t\t})\n\t\t);\n\t}\n\n\treturn plugins;\n}\n\nexport { cdnImport };\n","import fs from \"fs\";\nimport path from \"path\";\nimport type { Plugin } from \"vite\";\nimport type { AutoImportOptions } from \"./type\";\n\n/**\n * TSX组件自动导入\n * @description 只会生成安装文件\n * @param dir 组件文件夹路径\n */\nfunction tsxComponentAutoImport(options: string | AutoImportOptions): Plugin {\n\tif (!options) return;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-tsx-component-auto-import\",\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst dir = typeof options === \"string\" ? options : options.dir;\n\n\t\t\tconst defaultFormatter = (fName: string): string => {\n\t\t\t\treturn fName.charAt(0).toUpperCase() + fName.slice(1);\n\t\t\t};\n\n\t\t\tconst formatter = typeof options === \"string\" ? defaultFormatter : (options.formatter ?? defaultFormatter);\n\n\t\t\t// 获取所有文件夹名称\n\t\t\tconst cFiles = fs.readdirSync(dir, {\n\t\t\t\twithFileTypes: true,\n\t\t\t});\n\n\t\t\tif (cFiles?.length === 0) return;\n\n\t\t\t// 组件名称\n\t\t\tconst cNames = cFiles\n\t\t\t\t// 排除export文件\n\t\t\t\t.filter((f) => f.name !== \"index.ts\")\n\t\t\t\t.map((file) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcomponentName: formatter(file.name),\n\t\t\t\t\t\tfileName: file.name,\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tif (a.componentName < b.componentName) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.componentName > b.componentName) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\tlet importContent = \"\";\n\t\t\tlet exportContent = \"\";\n\t\t\tlet typeContent = \"\";\n\n\t\t\tcNames.forEach(({ componentName, fileName }, idx) => {\n\t\t\t\timportContent += `import { ${componentName} } from \"./${fileName}\";\n`;\n\n\t\t\t\texportContent += `export * from \"./${fileName}\";\n`;\n\n\t\t\t\ttypeContent += `\t${componentName},`;\n\n\t\t\t\tif (idx + 1 < cNames.length) {\n\t\t\t\t\ttypeContent += \"\\n\";\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfs.writeFileSync(\n\t\t\t\tpath.join(dir, \"index.ts\"),\n\t\t\t\t`import type { Plugin } from \"vue\";\n${importContent}\n${exportContent}\nexport default [\n${typeContent}\n] as Plugin[];\n`\n\t\t\t);\n\t\t},\n\t};\n}\n\n/**\n * VUE组件自动导入\n * @description 只会生成安装文件\n * @param dir 组件文件夹路径\n */\nfunction vueComponentAutoImport(options: string | AutoImportOptions): Plugin {\n\tif (!options) return;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-vue-component-auto-import\",\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst dir = typeof options === \"string\" ? options : options.dir;\n\n\t\t\tconst defaultFormatter = (fName: string): string => {\n\t\t\t\treturn fName.charAt(0).toUpperCase() + fName.slice(1);\n\t\t\t};\n\n\t\t\tconst formatter = typeof options === \"string\" ? defaultFormatter : (options.formatter ?? defaultFormatter);\n\n\t\t\t// 获取所有文件夹名称\n\t\t\tconst cFiles = fs.readdirSync(dir, {\n\t\t\t\twithFileTypes: true,\n\t\t\t});\n\n\t\t\tif (cFiles?.length === 0) return;\n\n\t\t\t// 组件名称\n\t\t\tconst cNames = cFiles\n\t\t\t\t// 排除export文件\n\t\t\t\t.filter((f) => f.name !== \"index.ts\")\n\t\t\t\t.map((file) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcomponentName: formatter(file.name),\n\t\t\t\t\t\tfileName: file.name,\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tif (a.componentName < b.componentName) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.componentName > b.componentName) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\tlet importContent = \"\";\n\t\t\tlet exportContent = \"\";\n\t\t\tlet typeContent = \"\";\n\n\t\t\tcNames.forEach(({ componentName, fileName }, idx) => {\n\t\t\t\timportContent += `import ${componentName} from \"./${fileName}/index.vue\";\n`;\n\n\t\t\t\texportContent += `export * from \"./${fileName}/index.vue\";\n`;\n\n\t\t\t\ttypeContent += `\t${componentName},`;\n\n\t\t\t\tif (idx + 1 < cNames.length) {\n\t\t\t\t\ttypeContent += \"\\n\";\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfs.writeFileSync(\n\t\t\t\tpath.join(dir, \"index.ts\"),\n\t\t\t\t`import type { DefineComponent } from \"vue\";\n${importContent}\n${exportContent}\nexport default [\n${typeContent}\n] as unknown as DefineComponent[];\n`\n\t\t\t);\n\t\t},\n\t};\n}\n\nexport { tsxComponentAutoImport, vueComponentAutoImport };\n","import fs from \"fs\";\nimport path from \"path\";\nimport type { Plugin, ResolvedConfig } from \"vite\";\n\nfunction padZero(num: number, length = 2): string {\n\treturn num.toString().padStart(length, \"0\");\n}\n\nfunction formatDate(date: Date): string {\n\tconst year = date.getUTCFullYear();\n\tconst month = padZero(date.getUTCMonth() + 1);\n\tconst day = padZero(date.getUTCDate());\n\tconst hours = padZero(date.getUTCHours());\n\tconst minutes = padZero(date.getUTCMinutes());\n\tconst seconds = padZero(date.getUTCSeconds());\n\tconst milliseconds = padZero(date.getUTCMilliseconds(), 3);\n\n\treturn `Z ${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`;\n}\n\n/**\n * 版本更新插件\n * @param version 不要携带 'v',示例:1.0.0\n * @returns\n */\nfunction versionUpdatePlugin(version: string): Plugin {\n\tlet config: ResolvedConfig;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-version-update\",\n\t\tconfigResolved: (resolvedConfig: ResolvedConfig): void | Promise<void> => {\n\t\t\t// 存储最终解析的配置\n\t\t\tconfig = resolvedConfig;\n\t\t},\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst curDate = new Date();\n\n\t\t\tconst dateTime = formatDate(curDate);\n\n\t\t\tconst versionDir = config.publicDir;\n\t\t\tconst versionPath = path.join(versionDir, \"version.json\");\n\t\t\tif (!fs.existsSync(versionDir)) {\n\t\t\t\tfs.mkdirSync(versionDir);\n\t\t\t}\n\n\t\t\t// 写入版本信息文件\n\t\t\tconst content = JSON.stringify({ version: `v${version}`, dateTime }, null, 4);\n\t\t\tfs.writeFileSync(versionPath, content);\n\n\t\t\tconst pkgPath = path.join(config.base, \"package.json\");\n\t\t\tif (fs.existsSync(pkgPath)) {\n\t\t\t\tconst pkgJson = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n\t\t\t\tpkgJson.version = version;\n\t\t\t\tfs.writeFileSync(pkgPath, JSON.stringify(pkgJson, null, 2), \"utf-8\");\n\t\t\t}\n\t\t},\n\t};\n}\n\nexport { versionUpdatePlugin };\n"],"mappings":"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","names":["fs","path","findSvgFile","dir","svgContents","file","iconName","svgContent","match","attr","viewBoxMatch","widthMatch","heightMatch","width","height","viewBoxContent","a","b","writeTSXIcon","componentName","iconDir","srcDir","iconContent","line","indexContent","indexDTS","buildSvgIcon","writeDir","config","resolvedConfig","svgFiles","iconsPath","iconImportContent","iconTypeContent","exportContent","typeDTSContent","svg","idx","fs","path","externalGlobals","viteExternalsPlugin","isDev","getModuleVersion","name","pwd","pkgFile","isFullPath","renderUrl","url","data","getModuleInfo","module","prodUrl","v","version","pathList","p","css","cssList","c","cdnImport","options","modules","enableInDevMode","isBuild","externalMap","alias","plugins","_","command","userConfig","html","descriptors","attrs","fs","path","tsxComponentAutoImport","options","dir","defaultFormatter","fName","formatter","cFiles","cNames","f","file","a","b","importContent","exportContent","typeContent","componentName","fileName","idx","vueComponentAutoImport","fs","path","padZero","num","length","formatDate","date","year","month","day","hours","minutes","seconds","milliseconds","versionUpdatePlugin","version","config","resolvedConfig","dateTime","versionDir","versionPath","content","pkgPath","pkgJson"]}
1
+ {"version":3,"sources":["../../packages/buildSvgIcon/index.ts","../../packages/cdnImport/index.ts","../../packages/componentAutoImport/index.ts","../../packages/versionUpdate/index.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport type { Plugin, ResolvedConfig } from \"vite\";\n\n/**\n * 查找 svg 文件\n */\n\nconst findSvgFile = (dir: string): { iconName: string; componentName: string; iconContent: string }[] => {\n\t// svg 内容\n\tconst svgContents: { iconName: string; componentName: string; iconContent: string }[] = [];\n\t// 获取当前目录下的文件\n\tconst svgFiles = fs.readdirSync(dir, {\n\t\twithFileTypes: true,\n\t});\n\n\tsvgFiles.forEach((file) => {\n\t\tif (file.isDirectory()) {\n\t\t\tsvgContents.push(...findSvgFile(path.join(dir, file.name)));\n\t\t} else {\n\t\t\tconst iconName = file.name.replace(\".svg\", \"\");\n\n\t\t\tconst svgContent = fs\n\t\t\t\t.readFileSync(path.join(dir, file.name), \"utf-8\")\n\t\t\t\t.replace(/<\\?xml.*?\\?>/, \"\")\n\t\t\t\t.replace(/<!DOCTYPE svg.*?>/, \"\")\n\t\t\t\t// .replace(/(\\r)|(\\n)/g, \"\")\n\t\t\t\t.trimStart()\n\t\t\t\t.trimEnd()\n\t\t\t\t// .replace(/(fill=\"[^>+].*?\")/g, 'fill=\"\"')\n\t\t\t\t.replace(/<svg([^>+].*?)>/, (match, attr) => {\n\t\t\t\t\tconst viewBoxMatch = attr.match(/viewBox=\"[^\"]+\"/);\n\t\t\t\t\tconst widthMatch = attr.match(/width=\"(\\d+)\"/);\n\t\t\t\t\tconst heightMatch = attr.match(/height=\"(\\d+)\"/);\n\t\t\t\t\tlet width = 1024;\n\t\t\t\t\tlet height = 1024;\n\t\t\t\t\tif (widthMatch) {\n\t\t\t\t\t\twidth = widthMatch[0];\n\t\t\t\t\t}\n\t\t\t\t\tif (heightMatch) {\n\t\t\t\t\t\theight = heightMatch[0];\n\t\t\t\t\t}\n\t\t\t\t\tlet viewBoxContent = \"\";\n\t\t\t\t\tif (!viewBoxMatch) {\n\t\t\t\t\t\tviewBoxContent = `viewBox=\"0 0 ${width} ${height}\"`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tviewBoxContent = viewBoxMatch[0];\n\t\t\t\t\t}\n\t\t\t\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" ${viewBoxContent}>`;\n\t\t\t\t});\n\n\t\t\tsvgContents.push({\n\t\t\t\t// iconName: iconName.charAt(0).toUpperCase() + iconName.slice(1),\n\t\t\t\ticonName,\n\t\t\t\tcomponentName: iconName.charAt(0).toUpperCase() + iconName.slice(1),\n\t\t\t\ticonContent: svgContent,\n\t\t\t});\n\t\t}\n\t});\n\n\treturn svgContents.sort((a, b) => {\n\t\tif (a.iconName < b.iconName) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (a.iconName > b.iconName) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t});\n};\n\n/**\n * 写入 TSX 图标\n */\nconst writeTSXIcon = (iconName: string, componentName: string, iconDir: string, svgContent: string): void => {\n\tconst srcDir = path.join(iconDir, \"src\");\n\n\tfs.mkdirSync(iconDir, { recursive: true });\n\tfs.mkdirSync(srcDir, { recursive: true });\n\n\tconst iconContent = `import { defineComponent } from \"vue\";\n\n/**\n * ${componentName} 图标组件\n */\nexport default defineComponent({\n\tname: \"${componentName}\",\n\trender() {\n\t\treturn (\n${svgContent\n\t.split(\"\\n\")\n\t.map((line) => `\t\t\t${line}`)\n\t.join(\"\\n\")}\n\t\t);\n\t},\n});\n`;\n\n\tfs.writeFileSync(path.join(srcDir, `${iconName}.tsx`), iconContent);\n\n\tconst indexContent = `import { withInstall } from \"fast-element-plus\";\nimport ${componentName}TSX from \"./src/${iconName}.tsx\";\n\nexport const ${componentName} = withInstall(${componentName}TSX);\nexport default ${componentName};\n`;\n\n\tfs.writeFileSync(path.join(iconDir, \"index.ts\"), indexContent);\n\n\tconst indexDTS = `import type { TSXWithInstall } from \"fast-element-plus\";\nimport type { default as ${componentName}TSX } from \"./src/${iconName}\";\n\nexport declare const ${componentName}: TSXWithInstall<typeof ${componentName}TSX>;\nexport default ${componentName};\n`;\n\n\tfs.writeFileSync(path.join(iconDir, \"index.d.ts\"), indexDTS);\n};\n\n/**\n * 构建 svg 图标组件\n * @param dir svg 文件路径\n * @param writeDir 写入的文件路径 相对的即可\n */\nfunction buildSvgIcon(dir: string, writeDir: string): Plugin {\n\tif (!dir || !writeDir) return;\n\n\tlet config: ResolvedConfig;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-build-svg-icon\",\n\t\tconfigResolved: (resolvedConfig: ResolvedConfig): void | Promise<void> => {\n\t\t\t// 存储最终解析的配置\n\t\t\tconfig = resolvedConfig;\n\t\t},\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst svgFiles = findSvgFile(path.resolve(config.root, dir));\n\n\t\t\tconst iconsPath = path.resolve(config.root, writeDir);\n\t\t\tfs.mkdirSync(iconsPath, { recursive: true });\n\n\t\t\tlet iconImportContent = \"\";\n\t\t\tlet iconTypeContent = \"\";\n\t\t\tlet exportContent = \"\";\n\n\t\t\tsvgFiles.forEach((svg, idx) => {\n\t\t\t\twriteTSXIcon(svg.iconName, svg.componentName, path.join(iconsPath, svg.iconName), svg.iconContent);\n\n\t\t\t\ticonImportContent += `import { ${svg.componentName} } from \"./${svg.iconName}\";\n`;\n\n\t\t\t\ticonTypeContent += `\t${svg.iconName},`;\n\n\t\t\t\texportContent += `export * from \"./${svg.iconName}\";\n`;\n\n\t\t\t\tif (idx + 1 < svgFiles.length) {\n\t\t\t\t\ticonTypeContent += \"\\n\";\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfs.writeFileSync(\n\t\t\t\tpath.join(iconsPath, \"index.ts\"),\n\t\t\t\t`import type { DefineComponent } from \"vue\";\n${iconImportContent}\n${exportContent}\nexport default [\n${iconTypeContent}\n] as Plugin[];\n`\n\t\t\t);\n\t\t},\n\t};\n}\n\nexport { findSvgFile, writeTSXIcon, buildSvgIcon };\n","import fs from \"fs\";\nimport path from \"path\";\nimport externalGlobals from \"rollup-plugin-external-globals\";\nimport type { HtmlTagDescriptor, Plugin, UserConfig } from \"vite\";\nimport { viteExternalsPlugin } from \"vite-plugin-externals\";\nimport type { CdnImportOptions, Module } from \"./type\";\n\nconst isDev = process.env.NODE_ENV === \"development\";\n\n/**\n * get npm module version\n * @param name\n * @returns\n */\nfunction getModuleVersion(name: string): string {\n\tconst pwd = process.cwd();\n\tconst pkgFile = path.join(pwd, \"node_modules\", name, \"package.json\");\n\tif (fs.existsSync(pkgFile)) {\n\t\tconst pkgJson = JSON.parse(fs.readFileSync(pkgFile, \"utf8\"));\n\t\treturn pkgJson.version;\n\t}\n\n\treturn \"\";\n}\n\n/**\n * 是否完整的 url\n * @param path\n * @returns\n */\nfunction isFullPath(path: string): boolean {\n\treturn path.startsWith(\"http:\") || path.startsWith(\"https:\") || path.startsWith(\"//\") ? true : false;\n}\n\nfunction renderUrl(\n\turl: string,\n\tdata: {\n\t\tname: string;\n\t\tversion: string;\n\t\tpath: string;\n\t}\n): string {\n\tconst { path } = data;\n\tif (isFullPath(path)) {\n\t\turl = path;\n\t}\n\treturn url\n\t\t.replace(/\\{name\\}/g, data.name)\n\t\t.replace(/\\{version\\}/g, data.version)\n\t\t.replace(/\\{path\\}/g, path);\n}\n\nfunction getModuleInfo(module: Module, prodUrl: string): Module & { pathList?: string[]; cssList?: string[] } {\n\tprodUrl = module.prodUrl || prodUrl;\n\tconst v = module;\n\tconst version = module.version || getModuleVersion(v.name);\n\tlet pathList: string[] = [];\n\tif (!Array.isArray(v.path)) {\n\t\tpathList.push(v.path);\n\t} else {\n\t\tpathList = v.path;\n\t}\n\n\tconst data = {\n\t\t...v,\n\t\tversion,\n\t};\n\n\tpathList = pathList.map((p) => {\n\t\tif (!version && !isFullPath(p)) {\n\t\t\tthrow new Error(`modules: ${data.name} package.json file does not exist`);\n\t\t}\n\t\treturn renderUrl(prodUrl, {\n\t\t\tname: data.name,\n\t\t\tversion: data.version,\n\t\t\tpath: p,\n\t\t});\n\t});\n\n\tlet css = v.css || [];\n\tif (!Array.isArray(css) && css) {\n\t\tcss = [css];\n\t}\n\n\tconst cssList = !Array.isArray(css)\n\t\t? []\n\t\t: css.map((c) =>\n\t\t\t\trenderUrl(prodUrl, {\n\t\t\t\t\tname: data.name,\n\t\t\t\t\tversion: data.version,\n\t\t\t\t\tpath: c,\n\t\t\t\t})\n\t\t\t);\n\n\treturn {\n\t\t...v,\n\t\tversion,\n\t\tpathList,\n\t\tcssList,\n\t};\n}\n\n/**\n * CDN 导入\n * @param options\n * @returns\n */\nfunction cdnImport(options: CdnImportOptions): Plugin[] {\n\tconst { modules = [], prodUrl = \"https://cdn.jsdelivr.net/npm/{name}@{version}/{path}\", enableInDevMode = false } = options;\n\n\tlet isBuild = false;\n\n\tconst data = (Array.isArray(modules) ? modules : [modules])\n\t\t.map((v) => (typeof v === \"function\" ? v(prodUrl) : v))\n\t\t.map((v) => getModuleInfo(v, prodUrl));\n\n\tconst externalMap: {\n\t\t[name: string]: string;\n\t} = {};\n\n\tdata.forEach((v) => {\n\t\texternalMap[v.name] = v.var;\n\t\tif (Array.isArray(v.alias)) {\n\t\t\tv.alias.forEach((alias) => {\n\t\t\t\texternalMap[alias] = v.var;\n\t\t\t});\n\t\t}\n\t});\n\n\tconst plugins: Plugin[] = [\n\t\t{\n\t\t\tname: \"fast-vite-plugin-cdn-import\",\n\t\t\tenforce: \"pre\",\n\t\t\tconfig(_, { command }): UserConfig {\n\t\t\t\tisBuild = command === \"build\";\n\n\t\t\t\tconst userConfig: UserConfig = {\n\t\t\t\t\tbuild: {\n\t\t\t\t\t\trollupOptions: {\n\t\t\t\t\t\t\tplugins: [],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tif (isBuild) {\n\t\t\t\t\tuserConfig.build.rollupOptions.plugins = [externalGlobals(externalMap)];\n\t\t\t\t}\n\n\t\t\t\treturn userConfig;\n\t\t\t},\n\t\t\ttransformIndexHtml(html): string | HtmlTagDescriptor[] {\n\t\t\t\tif (!isBuild && !enableInDevMode) {\n\t\t\t\t\treturn html;\n\t\t\t\t}\n\n\t\t\t\tconst descriptors: HtmlTagDescriptor[] = [];\n\n\t\t\t\tdata.forEach((v) => {\n\t\t\t\t\tv.pathList.forEach((url) => {\n\t\t\t\t\t\tconst attrs = {\n\t\t\t\t\t\t\tsrc: url,\n\t\t\t\t\t\t\tcrossorigin: \"anonymous\",\n\t\t\t\t\t\t\t...(v?.attrs ?? {}),\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tdescriptors.push({\n\t\t\t\t\t\t\ttag: \"script\",\n\t\t\t\t\t\t\tattrs,\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\tv.cssList.forEach((url) => {\n\t\t\t\t\t\tconst attrs = {\n\t\t\t\t\t\t\thref: url,\n\t\t\t\t\t\t\trel: \"stylesheet\",\n\t\t\t\t\t\t\tcrossorigin: \"anonymous\",\n\t\t\t\t\t\t\t...(v?.attrs ?? {}),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tdescriptors.push({\n\t\t\t\t\t\t\ttag: \"link\",\n\t\t\t\t\t\t\tattrs,\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\treturn descriptors;\n\t\t\t},\n\t\t},\n\t];\n\n\tif (isDev && enableInDevMode) {\n\t\tplugins.push(\n\t\t\tviteExternalsPlugin(externalMap, {\n\t\t\t\tenforce: \"pre\",\n\t\t\t})\n\t\t);\n\t}\n\n\treturn plugins;\n}\n\nexport { cdnImport };\n","import fs from \"fs\";\nimport path from \"path\";\nimport type { Plugin } from \"vite\";\nimport type { AutoImportOptions } from \"./type\";\n\n/**\n * TSX组件自动导入\n * @description 只会生成安装文件\n * @param dir 组件文件夹路径\n */\nfunction tsxComponentAutoImport(options: string | AutoImportOptions): Plugin {\n\tif (!options) return;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-tsx-component-auto-import\",\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst dir = typeof options === \"string\" ? options : options.dir;\n\n\t\t\tconst defaultFormatter = (fName: string): string => {\n\t\t\t\treturn fName.charAt(0).toUpperCase() + fName.slice(1);\n\t\t\t};\n\n\t\t\tconst formatter = typeof options === \"string\" ? defaultFormatter : (options.formatter ?? defaultFormatter);\n\n\t\t\t// 获取所有文件夹名称\n\t\t\tconst cFiles = fs.readdirSync(dir, {\n\t\t\t\twithFileTypes: true,\n\t\t\t});\n\n\t\t\tif (cFiles?.length === 0) return;\n\n\t\t\t// 组件名称\n\t\t\tconst cNames = cFiles\n\t\t\t\t// 排除export文件\n\t\t\t\t.filter((f) => f.name !== \"index.ts\")\n\t\t\t\t.map((file) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcomponentName: formatter(file.name),\n\t\t\t\t\t\tfileName: file.name,\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tif (a.componentName < b.componentName) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.componentName > b.componentName) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\tlet importContent = \"\";\n\t\t\tlet exportContent = \"\";\n\t\t\tlet typeContent = \"\";\n\n\t\t\tcNames.forEach(({ componentName, fileName }, idx) => {\n\t\t\t\timportContent += `import { ${componentName} } from \"./${fileName}\";\n`;\n\n\t\t\t\texportContent += `export * from \"./${fileName}\";\n`;\n\n\t\t\t\ttypeContent += `\t${componentName},`;\n\n\t\t\t\tif (idx + 1 < cNames.length) {\n\t\t\t\t\ttypeContent += \"\\n\";\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfs.writeFileSync(\n\t\t\t\tpath.join(dir, \"index.ts\"),\n\t\t\t\t`import type { Plugin } from \"vue\";\n${importContent}\n${exportContent}\nexport default [\n${typeContent}\n] as Plugin[];\n`\n\t\t\t);\n\t\t},\n\t};\n}\n\n/**\n * VUE组件自动导入\n * @description 只会生成安装文件\n * @param dir 组件文件夹路径\n */\nfunction vueComponentAutoImport(options: string | AutoImportOptions): Plugin {\n\tif (!options) return;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-vue-component-auto-import\",\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst dir = typeof options === \"string\" ? options : options.dir;\n\n\t\t\tconst defaultFormatter = (fName: string): string => {\n\t\t\t\treturn fName.charAt(0).toUpperCase() + fName.slice(1);\n\t\t\t};\n\n\t\t\tconst formatter = typeof options === \"string\" ? defaultFormatter : (options.formatter ?? defaultFormatter);\n\n\t\t\t// 获取所有文件夹名称\n\t\t\tconst cFiles = fs.readdirSync(dir, {\n\t\t\t\twithFileTypes: true,\n\t\t\t});\n\n\t\t\tif (cFiles?.length === 0) return;\n\n\t\t\t// 组件名称\n\t\t\tconst cNames = cFiles\n\t\t\t\t// 排除export文件\n\t\t\t\t.filter((f) => f.name !== \"index.ts\")\n\t\t\t\t.map((file) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcomponentName: formatter(file.name),\n\t\t\t\t\t\tfileName: file.name,\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tif (a.componentName < b.componentName) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.componentName > b.componentName) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\tlet importContent = \"\";\n\t\t\tlet exportContent = \"\";\n\t\t\tlet typeContent = \"\";\n\n\t\t\tcNames.forEach(({ componentName, fileName }, idx) => {\n\t\t\t\timportContent += `import ${componentName} from \"./${fileName}/index.vue\";\n`;\n\n\t\t\t\texportContent += `export * from \"./${fileName}/index.vue\";\n`;\n\n\t\t\t\ttypeContent += `\t${componentName},`;\n\n\t\t\t\tif (idx + 1 < cNames.length) {\n\t\t\t\t\ttypeContent += \"\\n\";\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfs.writeFileSync(\n\t\t\t\tpath.join(dir, \"index.ts\"),\n\t\t\t\t`import type { DefineComponent } from \"vue\";\n${importContent}\n${exportContent}\nexport default [\n${typeContent}\n] as unknown as DefineComponent[];\n`\n\t\t\t);\n\t\t},\n\t};\n}\n\nexport { tsxComponentAutoImport, vueComponentAutoImport };\n","import fs from \"fs\";\nimport path from \"path\";\nimport type { Plugin, ResolvedConfig } from \"vite\";\n\nfunction padZero(num: number, length = 2): string {\n\treturn num.toString().padStart(length, \"0\");\n}\n\nfunction formatDate(date: Date): string {\n\tconst year = date.getUTCFullYear();\n\tconst month = padZero(date.getUTCMonth() + 1);\n\tconst day = padZero(date.getUTCDate());\n\tconst hours = padZero(date.getUTCHours());\n\tconst minutes = padZero(date.getUTCMinutes());\n\tconst seconds = padZero(date.getUTCSeconds());\n\tconst milliseconds = padZero(date.getUTCMilliseconds(), 3);\n\n\treturn `Z ${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`;\n}\n\n/**\n * 版本更新插件\n * @param version 不要携带 'v',示例:1.0.0\n * @returns\n */\nfunction versionUpdatePlugin(version: string): Plugin {\n\tlet config: ResolvedConfig;\n\n\treturn {\n\t\tname: \"fast-vite-plugin-version-update\",\n\t\tconfigResolved: (resolvedConfig: ResolvedConfig): void | Promise<void> => {\n\t\t\t// 存储最终解析的配置\n\t\t\tconfig = resolvedConfig;\n\t\t},\n\t\tbuildStart(): void | Promise<void> {\n\t\t\tconst curDate = new Date();\n\n\t\t\tconst dateTime = formatDate(curDate);\n\n\t\t\tconst versionDir = config.publicDir;\n\t\t\tconst versionPath = path.join(versionDir, \"version.json\");\n\t\t\tif (!fs.existsSync(versionDir)) {\n\t\t\t\tfs.mkdirSync(versionDir);\n\t\t\t}\n\n\t\t\t// 写入版本信息文件\n\t\t\tconst content = JSON.stringify({ version: `v${version}`, dateTime }, null, 4);\n\t\t\tfs.writeFileSync(versionPath, content);\n\n\t\t\tconst pkgPath = path.join(config.base, \"package.json\");\n\t\t\tif (fs.existsSync(pkgPath)) {\n\t\t\t\tconst pkgJson = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n\t\t\t\tpkgJson.version = version;\n\t\t\t\tfs.writeFileSync(pkgPath, JSON.stringify(pkgJson, null, 2), \"utf-8\");\n\t\t\t}\n\t\t},\n\t};\n}\n\nexport { versionUpdatePlugin };\n"],"mappings":"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","names":["fs","path","findSvgFile","dir","svgContents","file","iconName","svgContent","match","attr","viewBoxMatch","widthMatch","heightMatch","width","height","viewBoxContent","a","b","writeTSXIcon","componentName","iconDir","srcDir","iconContent","line","indexContent","indexDTS","buildSvgIcon","writeDir","config","resolvedConfig","svgFiles","iconsPath","iconImportContent","iconTypeContent","exportContent","svg","idx","fs","path","externalGlobals","viteExternalsPlugin","isDev","getModuleVersion","name","pwd","pkgFile","isFullPath","renderUrl","url","data","getModuleInfo","module","prodUrl","v","version","pathList","p","css","cssList","c","cdnImport","options","modules","enableInDevMode","isBuild","externalMap","alias","plugins","_","command","userConfig","html","descriptors","attrs","fs","path","tsxComponentAutoImport","options","dir","defaultFormatter","fName","formatter","cFiles","cNames","f","file","a","b","importContent","exportContent","typeContent","componentName","fileName","idx","vueComponentAutoImport","fs","path","padZero","num","length","formatDate","date","year","month","day","hours","minutes","seconds","milliseconds","versionUpdatePlugin","version","config","resolvedConfig","dateTime","versionDir","versionPath","content","pkgPath","pkgJson"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "fast-vite-plugins",
3
3
  "author": "小方",
4
- "version": "1.0.6",
4
+ "version": "1.0.7",
5
5
  "description": "Fast Vite插件库.",
6
6
  "keywords": [
7
7
  "fast-vite-plugins",