@meng-xi/vite-plugin 0.0.3 → 0.0.4

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.
Files changed (38) hide show
  1. package/README-en.md +164 -150
  2. package/README.md +143 -84
  3. package/dist/common/index.cjs +1 -1
  4. package/dist/common/index.d.cts +132 -6
  5. package/dist/common/index.d.mts +132 -6
  6. package/dist/common/index.d.ts +132 -6
  7. package/dist/common/index.mjs +1 -1
  8. package/dist/factory/index.cjs +1 -1
  9. package/dist/factory/index.mjs +1 -1
  10. package/dist/index.cjs +1 -1
  11. package/dist/index.d.cts +2 -2
  12. package/dist/index.d.mts +2 -2
  13. package/dist/index.d.ts +2 -2
  14. package/dist/index.mjs +1 -1
  15. package/dist/logger/index.cjs +1 -1
  16. package/dist/logger/index.mjs +1 -1
  17. package/dist/plugins/index.cjs +1 -1
  18. package/dist/plugins/index.d.cts +166 -1
  19. package/dist/plugins/index.d.mts +166 -1
  20. package/dist/plugins/index.d.ts +166 -1
  21. package/dist/plugins/index.mjs +1 -1
  22. package/dist/shared/vite-plugin.B88RyRN8.mjs +3 -0
  23. package/dist/shared/vite-plugin.C7isVPKg.mjs +1 -0
  24. package/dist/shared/vite-plugin.D6NYITpX.cjs +1 -0
  25. package/dist/shared/vite-plugin.D8HTI0Ni.cjs +2 -0
  26. package/dist/shared/vite-plugin.Dd2ogbSe.mjs +2 -0
  27. package/dist/shared/vite-plugin.DqWt65U-.cjs +1 -0
  28. package/dist/shared/vite-plugin.HZb-1B5l.mjs +1 -0
  29. package/dist/shared/vite-plugin.IGZeStMa.cjs +3 -0
  30. package/package.json +72 -72
  31. package/dist/shared/vite-plugin.BT1oHRKK.cjs +0 -1
  32. package/dist/shared/vite-plugin.BTKhc7n7.cjs +0 -3
  33. package/dist/shared/vite-plugin.BZqhBDYR.mjs +0 -1
  34. package/dist/shared/vite-plugin.Bn8mcCzy.cjs +0 -3
  35. package/dist/shared/vite-plugin.CY2ydccp.mjs +0 -3
  36. package/dist/shared/vite-plugin.ClHiVXD6.mjs +0 -1
  37. package/dist/shared/vite-plugin.DSRKYuae.mjs +0 -3
  38. package/dist/shared/vite-plugin.DrSzERYS.cjs +0 -1
package/package.json CHANGED
@@ -1,72 +1,72 @@
1
- {
2
- "name": "@meng-xi/vite-plugin",
3
- "type": "module",
4
- "version": "0.0.3",
5
- "private": false,
6
- "description": "一个为 Vite 提供的插件库",
7
- "keywords": [
8
- "@meng-xi/vite-plugin",
9
- "meng-xi",
10
- "vite",
11
- "plugin",
12
- "vite-plugin"
13
- ],
14
- "main": "./dist/index.cjs",
15
- "module": "./dist/index.mjs",
16
- "types": "./dist/index.d.ts",
17
- "exports": {
18
- ".": {
19
- "require": "./dist/index.cjs",
20
- "import": "./dist/index.mjs",
21
- "types": "./dist/index.d.ts"
22
- },
23
- "./common": {
24
- "require": "./dist/common/index.cjs",
25
- "import": "./dist/common/index.mjs",
26
- "types": "./dist/common/index.d.ts"
27
- },
28
- "./factory": {
29
- "require": "./dist/factory/index.cjs",
30
- "import": "./dist/factory/index.mjs",
31
- "types": "./dist/factory/index.d.ts"
32
- },
33
- "./logger": {
34
- "require": "./dist/logger/index.cjs",
35
- "import": "./dist/logger/index.mjs",
36
- "types": "./dist/logger/index.d.ts"
37
- },
38
- "./plugins": {
39
- "require": "./dist/plugins/index.cjs",
40
- "import": "./dist/plugins/index.mjs",
41
- "types": "./dist/plugins/index.d.ts"
42
- }
43
- },
44
- "files": [
45
- "dist",
46
- "README.md",
47
- "README-en.md"
48
- ],
49
- "scripts": {
50
- "dev": "unbuild --watch",
51
- "build": "unbuild"
52
- },
53
- "peerDependencies": {
54
- "vite": "^5.0.0"
55
- },
56
- "devDependencies": {
57
- "@types/node": "^20.0.0",
58
- "unbuild": "^3.0.0",
59
- "typescript": "^5.2.0"
60
- },
61
- "author": {
62
- "name": "PedroQue99",
63
- "email": "ksmengfang@163.com"
64
- },
65
- "license": "MIT",
66
- "homepage": "https://github.com/MengXi-Studio/vite-plugin#readme",
67
- "repository": {
68
- "type": "git",
69
- "url": "git+https://github.com/MengXi-Studio/vite-plugin.git"
70
- },
71
- "bugs": "https://github.com/MengXi-Studio/vite-plugin/issues"
72
- }
1
+ {
2
+ "name": "@meng-xi/vite-plugin",
3
+ "type": "module",
4
+ "version": "0.0.4",
5
+ "private": false,
6
+ "description": "一个为 Vite 提供的插件库",
7
+ "keywords": [
8
+ "@meng-xi/vite-plugin",
9
+ "meng-xi",
10
+ "vite",
11
+ "plugin",
12
+ "vite-plugin"
13
+ ],
14
+ "main": "./dist/index.cjs",
15
+ "module": "./dist/index.mjs",
16
+ "types": "./dist/index.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "require": "./dist/index.cjs",
20
+ "import": "./dist/index.mjs",
21
+ "types": "./dist/index.d.ts"
22
+ },
23
+ "./common": {
24
+ "require": "./dist/common/index.cjs",
25
+ "import": "./dist/common/index.mjs",
26
+ "types": "./dist/common/index.d.ts"
27
+ },
28
+ "./factory": {
29
+ "require": "./dist/factory/index.cjs",
30
+ "import": "./dist/factory/index.mjs",
31
+ "types": "./dist/factory/index.d.ts"
32
+ },
33
+ "./logger": {
34
+ "require": "./dist/logger/index.cjs",
35
+ "import": "./dist/logger/index.mjs",
36
+ "types": "./dist/logger/index.d.ts"
37
+ },
38
+ "./plugins": {
39
+ "require": "./dist/plugins/index.cjs",
40
+ "import": "./dist/plugins/index.mjs",
41
+ "types": "./dist/plugins/index.d.ts"
42
+ }
43
+ },
44
+ "files": [
45
+ "dist",
46
+ "README.md",
47
+ "README-en.md"
48
+ ],
49
+ "scripts": {
50
+ "dev": "unbuild --watch",
51
+ "build": "unbuild"
52
+ },
53
+ "peerDependencies": {
54
+ "vite": "^5.0.0"
55
+ },
56
+ "devDependencies": {
57
+ "@types/node": "^20.0.0",
58
+ "unbuild": "^3.0.0",
59
+ "typescript": "^5.2.0"
60
+ },
61
+ "author": {
62
+ "name": "PedroQue99",
63
+ "email": "ksmengfang@163.com"
64
+ },
65
+ "license": "MIT",
66
+ "homepage": "https://github.com/MengXi-Studio/vite-plugin#readme",
67
+ "repository": {
68
+ "type": "git",
69
+ "url": "git+https://github.com/MengXi-Studio/vite-plugin.git"
70
+ },
71
+ "bugs": "https://github.com/MengXi-Studio/vite-plugin/issues"
72
+ }
@@ -1 +0,0 @@
1
- "use strict";const logger_index=require("../logger/index.cjs");require("fs"),require("path");const validation=require("./vite-plugin.BTKhc7n7.cjs");class BasePlugin{options;logger;validator;viteConfig=null;constructor(e,t){this.options=this.mergeOptions(e),this.logger=this.initLogger(t),this.validator=new validation.Validator(this.options),this.safeExecuteSync(()=>this.validateOptions(),"\u63D2\u4EF6\u914D\u7F6E\u9A8C\u8BC1")}mergeOptions(e){const t={enabled:!0,verbose:!0,errorStrategy:"throw"},r=this.getDefaultOptions();return validation.deepMerge(t,r,e)}initLogger(e){return logger_index.Logger.create({name:this.getPluginName(),enabled:this.options.verbose,...e}).createPluginLogger(this.getPluginName())}validateOptions(){}getEnforce(){}onConfigResolved(e){this.viteConfig=e,this.logger.info("\u914D\u7F6E\u89E3\u6790\u5B8C\u6210\uFF0C\u63D2\u4EF6\u5DF2\u521D\u59CB\u5316")}safeExecuteSync(e,t){try{return e()}catch(r){return this.handleError(r,t)}}async safeExecute(e,t){try{return await e()}catch(r){return this.handleError(r,t)}}handleError(e,t){let r=`${t}: `;switch(e instanceof Error?r+=e.message:typeof e=="string"?r+=e:r+=String(e),this.options.errorStrategy){case"throw":throw this.logger.error(r),e;case"log":case"ignore":this.logger.error(r);return;default:throw this.logger.error(r),e}}toPlugin(){const e={name:this.getPluginName(),enforce:this.getEnforce(),configResolved:t=>{this.options.enabled&&this.onConfigResolved(t)}};return this.addPluginHooks(e),e}}function createPluginFactory(o,e){return t=>{const r=e?e(t):t,i=new o(r),n=i.toPlugin();return n.pluginInstance=i,n}}exports.BasePlugin=BasePlugin,exports.createPluginFactory=createPluginFactory;
@@ -1,3 +0,0 @@
1
- "use strict";function deepMerge(...n){const u={};for(const r of n)if(r)for(const t in r){const i=r[t],e=u[t];typeof i=="object"&&i!==null&&!Array.isArray(i)&&typeof e=="object"&&e!==null&&!Array.isArray(e)?u[t]=deepMerge(e,i):u[t]=i}return u}class Validator{options;currentField=null;errors=[];constructor(u){this.options=u}field(u){const r=this;return r.currentField=u,r}required(){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");return this.options[this.currentField]==null&&this.errors.push(`${String(this.currentField)} \u662F\u5FC5\u586B\u5B57\u6BB5`),this}string(){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");const u=this.options[this.currentField];return u!=null&&typeof u!="string"&&this.errors.push(`${String(this.currentField)} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u7C7B\u578B`),this}boolean(){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");const u=this.options[this.currentField];return u!=null&&typeof u!="boolean"&&this.errors.push(`${String(this.currentField)} \u5FC5\u987B\u662F\u5E03\u5C14\u7C7B\u578B`),this}number(){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");const u=this.options[this.currentField];return u!=null&&typeof u!="number"&&this.errors.push(`${String(this.currentField)} \u5FC5\u987B\u662F\u6570\u5B57\u7C7B\u578B`),this}array(){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");const u=this.options[this.currentField];return u!=null&&!Array.isArray(u)&&this.errors.push(`${String(this.currentField)} \u5FC5\u987B\u662F\u6570\u7EC4\u7C7B\u578B`),this}object(){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");const u=this.options[this.currentField];return u!=null&&typeof u!="object"&&!Array.isArray(u)&&this.errors.push(`${String(this.currentField)} \u5FC5\u987B\u662F\u5BF9\u8C61\u7C7B\u578B`),this}default(u){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");return this.options[this.currentField]==null&&(this.options[this.currentField]=u),this}custom(u,r){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");const t=this.options[this.currentField];return t!=null&&!u(t)&&this.errors.push(r),this}validate(){if(this.errors.length>0)throw new Error(`\u914D\u7F6E\u9A8C\u8BC1\u5931\u8D25\uFF1A
2
- ${this.errors.map(u=>`- ${u}`).join(`
3
- `)}`);return this.options}}exports.Validator=Validator,exports.deepMerge=deepMerge;
@@ -1 +0,0 @@
1
- import s from"fs";import n from"path";async function C(u){try{await s.promises.access(u,s.constants.F_OK)}catch(t){const r=t;throw r.code==="ENOENT"?new Error(`\u590D\u5236\u6587\u4EF6\u5931\u8D25\uFF1A\u6E90\u6587\u4EF6\u4E0D\u5B58\u5728 - ${u}`):r.code==="EACCES"?new Error(`\u590D\u5236\u6587\u4EF6\u5931\u8D25\uFF1A\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u6E90\u6587\u4EF6 - ${u}`):new Error(`\u590D\u5236\u6587\u4EF6\u5931\u8D25\uFF1A\u68C0\u67E5\u6E90\u6587\u4EF6\u65F6\u51FA\u9519 - ${u}\uFF0C\u9519\u8BEF\uFF1A${r.message}`)}}async function p(u){try{await s.promises.mkdir(u,{recursive:!0})}catch(t){const r=t;throw r.code==="EACCES"?new Error(`\u590D\u5236\u6587\u4EF6\u5931\u8D25\uFF1A\u6CA1\u6709\u6743\u9650\u521B\u5EFA\u76EE\u6807\u76EE\u5F55 - ${u}`):new Error(`\u590D\u5236\u6587\u4EF6\u5931\u8D25\uFF1A\u521B\u5EFA\u76EE\u6807\u76EE\u5F55\u65F6\u51FA\u9519 - ${u}\uFF0C\u9519\u8BEF\uFF1A${r.message}`)}}async function y(u,t){const r=await s.promises.readdir(u,{withFileTypes:!0});let a=[];for(const E of r){const o=n.join(u,E.name);if(E.isDirectory()){if(a.push(o),t){const w=await y(o,t);a=[...a,...w]}}else a.push(o)}return a}async function A(u,t){try{const r=await s.promises.stat(u),a=await s.promises.stat(t);return r.mtimeMs>a.mtimeMs||r.size!==a.size}catch{return!0}}async function B(u,t,r){const a=Date.now(),{recursive:E,overwrite:o,incremental:w=!1}=r;let l=0,D=0,f=0;if((await s.promises.stat(u)).isDirectory()){await p(t);const i=await y(u,E),d=(await Promise.all(i.map(async e=>{const c=await s.promises.stat(e);return{path:e,isFile:c.isFile()}}))).filter(e=>e.isFile).map(e=>e.path);for(const e of d){const c=n.relative(u,e),m=n.join(t,c);await p(n.dirname(m));let F=o;if(!F)try{await s.promises.access(m,s.constants.F_OK),F=!1}catch{F=!0}w&&F&&(F=await A(e,m)),F?(await s.promises.copyFile(e,m),l++):D++}f=(await Promise.all(i.map(async e=>{const c=await s.promises.stat(e);return{path:e,isDirectory:c.isDirectory()}}))).filter(e=>e.isDirectory).length}else{await p(n.dirname(t));let i=o;if(!i)try{await s.promises.access(t,s.constants.F_OK),i=!1}catch{i=!0}w&&i&&(i=await A(u,t)),i?(await s.promises.copyFile(u,t),l++):D++}const h=Date.now()-a;return{copiedFiles:l,skippedFiles:D,copiedDirs:f,executionTime:h}}async function $(u,t){try{await s.promises.writeFile(u,t,"utf-8")}catch(r){const a=r;throw a.code==="EACCES"?new Error(`\u5199\u5165\u6587\u4EF6\u5931\u8D25\uFF1A\u6CA1\u6709\u6743\u9650\u5199\u5165\u6587\u4EF6 - ${u}`):new Error(`\u5199\u5165\u6587\u4EF6\u5931\u8D25\uFF1A\u5199\u5165\u6587\u4EF6\u65F6\u51FA\u9519 - ${u}\uFF0C\u9519\u8BEF\uFF1A${a.message}`)}}function S(u){try{return s.readFileSync(u,"utf-8")}catch(t){const r=t;throw r.code==="EACCES"?new Error(`\u8BFB\u53D6\u6587\u4EF6\u5931\u8D25\uFF1A\u6CA1\u6709\u6743\u9650\u8BFB\u53D6\u6587\u4EF6 - ${u}`):new Error(`\u8BFB\u53D6\u6587\u4EF6\u5931\u8D25\uFF1A\u8BFB\u53D6\u6587\u4EF6\u65F6\u51FA\u9519 - ${u}\uFF0C\u9519\u8BEF\uFF1A${r.message}`)}}export{B as a,S as b,C as c,p as e,y as r,A as s,$ as w};
@@ -1,3 +0,0 @@
1
- "use strict";const index=require("./vite-plugin.BT1oHRKK.cjs"),index$1=require("./vite-plugin.DrSzERYS.cjs"),validation=require("./vite-plugin.BTKhc7n7.cjs");class p extends index.BasePlugin{getDefaultOptions(){return{overwrite:!0,recursive:!0,incremental:!0}}validateOptions(){this.validator.field("sourceDir").required().string().custom(e=>e.trim()!=="","sourceDir \u4E0D\u80FD\u4E3A\u7A7A\u5B57\u7B26\u4E32").field("targetDir").required().string().custom(e=>e.trim()!=="","targetDir \u4E0D\u80FD\u4E3A\u7A7A\u5B57\u7B26\u4E32").field("overwrite").boolean().field("recursive").boolean().field("incremental").boolean().validate()}getPluginName(){return"copy-file"}getEnforce(){return"post"}async copyFiles(){const{sourceDir:e,targetDir:i,overwrite:t=!0,recursive:s=!0,incremental:o=!0,enabled:n=!0}=this.options;if(!n){this.logger.info(`\u63D2\u4EF6\u5DF2\u7981\u7528\uFF0C\u8DF3\u8FC7\u6267\u884C\uFF1A\u4ECE ${e} \u590D\u5236\u5230 ${i}`);return}await index$1.checkSourceExists(e);const c=await index$1.copySourceToTarget(e,i,{recursive:s,overwrite:t,incremental:o});this.logger.success(`\u590D\u5236\u6587\u4EF6\u6210\u529F\uFF1A\u4ECE ${e} \u5230 ${i}`,`\u590D\u5236\u4E86 ${c.copiedFiles} \u4E2A\u6587\u4EF6\uFF0C\u8DF3\u8FC7\u4E86 ${c.skippedFiles} \u4E2A\u6587\u4EF6\uFF0C\u8017\u65F6 ${c.executionTime}ms`)}addPluginHooks(e){e.writeBundle=async()=>{await this.safeExecute(()=>this.copyFiles(),"\u590D\u5236\u6587\u4EF6")}}}const copyFile=index.createPluginFactory(p);function generateIconTags(r){const e=[];if(r.link)return e.push(r.link),e;if(r.icons&&r.icons.length>0)e.push(...r.icons.map(i=>{let t=`<link rel="${i.rel}" href="${i.href}"`;return i.sizes&&(t+=` sizes="${i.sizes}"`),i.type&&(t+=` type="${i.type}"`),t+=" />",t}));else if(r.url)e.push(`<link rel="icon" href="${r.url}" />`);else{const i=r.base||"/",t=i.endsWith("/")?`${i}favicon.ico`:`${i}/favicon.ico`;e.push(`<link rel="icon" href="${t}" />`)}return e}class u extends index.BasePlugin{getDefaultOptions(){return{base:"/"}}validateOptions(){this.validator.field("base").string().field("url").string().field("link").string().field("icons").array(),this.options?.copyOptions&&(this.validator.field("copyOptions").object(),new validation.Validator(this.options.copyOptions).field("sourceDir").required().string().field("targetDir").required().string().field("overwrite").boolean().field("recursive").boolean().validate()),this.validator.validate()}getPluginName(){return"inject-ico"}injectIcoTags(e){if(!this.options.enabled)return this.logger.info("\u63D2\u4EF6\u5DF2\u7981\u7528\uFF0C\u8DF3\u8FC7\u56FE\u6807\u6CE8\u5165"),e;const i=generateIconTags(this.options);if(i.length===0)return this.logger.info("\u6CA1\u6709\u751F\u6210\u56FE\u6807\u6807\u7B7E\uFF0C\u8DF3\u8FC7\u6CE8\u5165"),e;let t=e;const s=t.indexOf("</head>");if(s!==-1){const o=i.join(`
2
- `)+`
3
- `;t=t.substring(0,s)+o+t.substring(s),this.logger.success(`\u6210\u529F\u6CE8\u5165 ${i.length} \u4E2A\u56FE\u6807\u6807\u7B7E\u5230 HTML \u6587\u4EF6`),i.forEach(n=>{this.logger.info(` - ${n}`)})}else this.logger.warn("\u672A\u627E\u5230 </head> \u6807\u7B7E\uFF0C\u8DF3\u8FC7\u56FE\u6807\u6CE8\u5165");return t}async copyFiles(){if(!this.options.enabled){this.logger.info("\u63D2\u4EF6\u5DF2\u7981\u7528\uFF0C\u8DF3\u8FC7\u6587\u4EF6\u590D\u5236");return}const{copyOptions:e}=this.options;if(!e)return;const{sourceDir:i,targetDir:t,overwrite:s=!0,recursive:o=!0}=e;await index$1.checkSourceExists(i);const n=await index$1.copySourceToTarget(i,t,{recursive:o,overwrite:s,incremental:!0});this.logger.success(`\u56FE\u6807\u6587\u4EF6\u590D\u5236\u6210\u529F\uFF1A\u4ECE ${i} \u5230 ${t}`,`\u590D\u5236\u4E86 ${n.copiedFiles} \u4E2A\u6587\u4EF6\uFF0C\u8DF3\u8FC7\u4E86 ${n.skippedFiles} \u4E2A\u6587\u4EF6\uFF0C\u8017\u65F6 ${n.executionTime}ms`)}addPluginHooks(e){e.transformIndexHtml=i=>this.injectIcoTags(i),e.writeBundle=async()=>{await this.safeExecute(()=>this.copyFiles(),"\u56FE\u6807\u6587\u4EF6\u590D\u5236")}}}const injectIco=index.createPluginFactory(u,r=>typeof r=="string"?{base:r}:r||{});exports.copyFile=copyFile,exports.injectIco=injectIco;
@@ -1,3 +0,0 @@
1
- import{c as a,B as c}from"./vite-plugin.ClHiVXD6.mjs";import{c as l,a as F}from"./vite-plugin.BZqhBDYR.mjs";import{V as E}from"./vite-plugin.DSRKYuae.mjs";class g extends c{getDefaultOptions(){return{overwrite:!0,recursive:!0,incremental:!0}}validateOptions(){this.validator.field("sourceDir").required().string().custom(u=>u.trim()!=="","sourceDir \u4E0D\u80FD\u4E3A\u7A7A\u5B57\u7B26\u4E32").field("targetDir").required().string().custom(u=>u.trim()!=="","targetDir \u4E0D\u80FD\u4E3A\u7A7A\u5B57\u7B26\u4E32").field("overwrite").boolean().field("recursive").boolean().field("incremental").boolean().validate()}getPluginName(){return"copy-file"}getEnforce(){return"post"}async copyFiles(){const{sourceDir:u,targetDir:e,overwrite:i=!0,recursive:r=!0,incremental:o=!0,enabled:s=!0}=this.options;if(!s){this.logger.info(`\u63D2\u4EF6\u5DF2\u7981\u7528\uFF0C\u8DF3\u8FC7\u6267\u884C\uFF1A\u4ECE ${u} \u590D\u5236\u5230 ${e}`);return}await l(u);const n=await F(u,e,{recursive:r,overwrite:i,incremental:o});this.logger.success(`\u590D\u5236\u6587\u4EF6\u6210\u529F\uFF1A\u4ECE ${u} \u5230 ${e}`,`\u590D\u5236\u4E86 ${n.copiedFiles} \u4E2A\u6587\u4EF6\uFF0C\u8DF3\u8FC7\u4E86 ${n.skippedFiles} \u4E2A\u6587\u4EF6\uFF0C\u8017\u65F6 ${n.executionTime}ms`)}addPluginHooks(u){u.writeBundle=async()=>{await this.safeExecute(()=>this.copyFiles(),"\u590D\u5236\u6587\u4EF6")}}}const d=a(g);function f(t){const u=[];if(t.link)return u.push(t.link),u;if(t.icons&&t.icons.length>0)u.push(...t.icons.map(e=>{let i=`<link rel="${e.rel}" href="${e.href}"`;return e.sizes&&(i+=` sizes="${e.sizes}"`),e.type&&(i+=` type="${e.type}"`),i+=" />",i}));else if(t.url)u.push(`<link rel="icon" href="${t.url}" />`);else{const e=t.base||"/",i=e.endsWith("/")?`${e}favicon.ico`:`${e}/favicon.ico`;u.push(`<link rel="icon" href="${i}" />`)}return u}class p extends c{getDefaultOptions(){return{base:"/"}}validateOptions(){this.validator.field("base").string().field("url").string().field("link").string().field("icons").array(),this.options?.copyOptions&&(this.validator.field("copyOptions").object(),new E(this.options.copyOptions).field("sourceDir").required().string().field("targetDir").required().string().field("overwrite").boolean().field("recursive").boolean().validate()),this.validator.validate()}getPluginName(){return"inject-ico"}injectIcoTags(u){if(!this.options.enabled)return this.logger.info("\u63D2\u4EF6\u5DF2\u7981\u7528\uFF0C\u8DF3\u8FC7\u56FE\u6807\u6CE8\u5165"),u;const e=f(this.options);if(e.length===0)return this.logger.info("\u6CA1\u6709\u751F\u6210\u56FE\u6807\u6807\u7B7E\uFF0C\u8DF3\u8FC7\u6CE8\u5165"),u;let i=u;const r=i.indexOf("</head>");if(r!==-1){const o=e.join(`
2
- `)+`
3
- `;i=i.substring(0,r)+o+i.substring(r),this.logger.success(`\u6210\u529F\u6CE8\u5165 ${e.length} \u4E2A\u56FE\u6807\u6807\u7B7E\u5230 HTML \u6587\u4EF6`),e.forEach(s=>{this.logger.info(` - ${s}`)})}else this.logger.warn("\u672A\u627E\u5230 </head> \u6807\u7B7E\uFF0C\u8DF3\u8FC7\u56FE\u6807\u6CE8\u5165");return i}async copyFiles(){if(!this.options.enabled){this.logger.info("\u63D2\u4EF6\u5DF2\u7981\u7528\uFF0C\u8DF3\u8FC7\u6587\u4EF6\u590D\u5236");return}const{copyOptions:u}=this.options;if(!u)return;const{sourceDir:e,targetDir:i,overwrite:r=!0,recursive:o=!0}=u;await l(e);const s=await F(e,i,{recursive:o,overwrite:r,incremental:!0});this.logger.success(`\u56FE\u6807\u6587\u4EF6\u590D\u5236\u6210\u529F\uFF1A\u4ECE ${e} \u5230 ${i}`,`\u590D\u5236\u4E86 ${s.copiedFiles} \u4E2A\u6587\u4EF6\uFF0C\u8DF3\u8FC7\u4E86 ${s.skippedFiles} \u4E2A\u6587\u4EF6\uFF0C\u8017\u65F6 ${s.executionTime}ms`)}addPluginHooks(u){u.transformIndexHtml=e=>this.injectIcoTags(e),u.writeBundle=async()=>{await this.safeExecute(()=>this.copyFiles(),"\u56FE\u6807\u6587\u4EF6\u590D\u5236")}}}const h=a(p,t=>typeof t=="string"?{base:t}:t||{});export{d as c,h as i};
@@ -1 +0,0 @@
1
- import{Logger as s}from"../logger/index.mjs";import"fs";import"path";import{V as g,d as a}from"./vite-plugin.DSRKYuae.mjs";class u{options;logger;validator;viteConfig=null;constructor(t,e){this.options=this.mergeOptions(t),this.logger=this.initLogger(e),this.validator=new g(this.options),this.safeExecuteSync(()=>this.validateOptions(),"\u63D2\u4EF6\u914D\u7F6E\u9A8C\u8BC1")}mergeOptions(t){const e={enabled:!0,verbose:!0,errorStrategy:"throw"},r=this.getDefaultOptions();return a(e,r,t)}initLogger(t){return s.create({name:this.getPluginName(),enabled:this.options.verbose,...t}).createPluginLogger(this.getPluginName())}validateOptions(){}getEnforce(){}onConfigResolved(t){this.viteConfig=t,this.logger.info("\u914D\u7F6E\u89E3\u6790\u5B8C\u6210\uFF0C\u63D2\u4EF6\u5DF2\u521D\u59CB\u5316")}safeExecuteSync(t,e){try{return t()}catch(r){return this.handleError(r,e)}}async safeExecute(t,e){try{return await t()}catch(r){return this.handleError(r,e)}}handleError(t,e){let r=`${e}: `;switch(t instanceof Error?r+=t.message:typeof t=="string"?r+=t:r+=String(t),this.options.errorStrategy){case"throw":throw this.logger.error(r),t;case"log":case"ignore":this.logger.error(r);return;default:throw this.logger.error(r),t}}toPlugin(){const t={name:this.getPluginName(),enforce:this.getEnforce(),configResolved:e=>{this.options.enabled&&this.onConfigResolved(e)}};return this.addPluginHooks(t),t}}function l(o,t){return e=>{const r=t?t(e):e,i=new o(r),n=i.toPlugin();return n.pluginInstance=i,n}}export{u as B,l as c};
@@ -1,3 +0,0 @@
1
- function s(...n){const u={};for(const r of n)if(r)for(const t in r){const i=r[t],e=u[t];typeof i=="object"&&i!==null&&!Array.isArray(i)&&typeof e=="object"&&e!==null&&!Array.isArray(e)?u[t]=s(e,i):u[t]=i}return u}class o{options;currentField=null;errors=[];constructor(u){this.options=u}field(u){const r=this;return r.currentField=u,r}required(){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");return this.options[this.currentField]==null&&this.errors.push(`${String(this.currentField)} \u662F\u5FC5\u586B\u5B57\u6BB5`),this}string(){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");const u=this.options[this.currentField];return u!=null&&typeof u!="string"&&this.errors.push(`${String(this.currentField)} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u7C7B\u578B`),this}boolean(){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");const u=this.options[this.currentField];return u!=null&&typeof u!="boolean"&&this.errors.push(`${String(this.currentField)} \u5FC5\u987B\u662F\u5E03\u5C14\u7C7B\u578B`),this}number(){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");const u=this.options[this.currentField];return u!=null&&typeof u!="number"&&this.errors.push(`${String(this.currentField)} \u5FC5\u987B\u662F\u6570\u5B57\u7C7B\u578B`),this}array(){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");const u=this.options[this.currentField];return u!=null&&!Array.isArray(u)&&this.errors.push(`${String(this.currentField)} \u5FC5\u987B\u662F\u6570\u7EC4\u7C7B\u578B`),this}object(){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");const u=this.options[this.currentField];return u!=null&&typeof u!="object"&&!Array.isArray(u)&&this.errors.push(`${String(this.currentField)} \u5FC5\u987B\u662F\u5BF9\u8C61\u7C7B\u578B`),this}default(u){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");return this.options[this.currentField]==null&&(this.options[this.currentField]=u),this}custom(u,r){if(this.currentField===null)throw new Error("\u5FC5\u987B\u5148\u8C03\u7528 field() \u65B9\u6CD5\u6307\u5B9A\u8981\u9A8C\u8BC1\u7684\u5B57\u6BB5");const t=this.options[this.currentField];return t!=null&&!u(t)&&this.errors.push(r),this}validate(){if(this.errors.length>0)throw new Error(`\u914D\u7F6E\u9A8C\u8BC1\u5931\u8D25\uFF1A
2
- ${this.errors.map(u=>`- ${u}`).join(`
3
- `)}`);return this.options}}export{o as V,s as d};
@@ -1 +0,0 @@
1
- "use strict";const s=require("fs"),l=require("path");function _interopDefaultCompat(u){return u&&typeof u=="object"&&"default"in u?u.default:u}const s__default=_interopDefaultCompat(s),l__default=_interopDefaultCompat(l);async function checkSourceExists(u){try{await s__default.promises.access(u,s__default.constants.F_OK)}catch(t){const e=t;throw e.code==="ENOENT"?new Error(`\u590D\u5236\u6587\u4EF6\u5931\u8D25\uFF1A\u6E90\u6587\u4EF6\u4E0D\u5B58\u5728 - ${u}`):e.code==="EACCES"?new Error(`\u590D\u5236\u6587\u4EF6\u5931\u8D25\uFF1A\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u6E90\u6587\u4EF6 - ${u}`):new Error(`\u590D\u5236\u6587\u4EF6\u5931\u8D25\uFF1A\u68C0\u67E5\u6E90\u6587\u4EF6\u65F6\u51FA\u9519 - ${u}\uFF0C\u9519\u8BEF\uFF1A${e.message}`)}}async function ensureTargetDir(u){try{await s__default.promises.mkdir(u,{recursive:!0})}catch(t){const e=t;throw e.code==="EACCES"?new Error(`\u590D\u5236\u6587\u4EF6\u5931\u8D25\uFF1A\u6CA1\u6709\u6743\u9650\u521B\u5EFA\u76EE\u6807\u76EE\u5F55 - ${u}`):new Error(`\u590D\u5236\u6587\u4EF6\u5931\u8D25\uFF1A\u521B\u5EFA\u76EE\u6807\u76EE\u5F55\u65F6\u51FA\u9519 - ${u}\uFF0C\u9519\u8BEF\uFF1A${e.message}`)}}async function readDirRecursive(u,t){const e=await s__default.promises.readdir(u,{withFileTypes:!0});let i=[];for(const F of e){const o=l__default.join(u,F.name);if(F.isDirectory()){if(i.push(o),t){const E=await readDirRecursive(o,t);i=[...i,...E]}}else i.push(o)}return i}async function shouldUpdateFile(u,t){try{const e=await s__default.promises.stat(u),i=await s__default.promises.stat(t);return e.mtimeMs>i.mtimeMs||e.size!==i.size}catch{return!0}}async function copySourceToTarget(u,t,e){const i=Date.now(),{recursive:F,overwrite:o,incremental:E=!1}=e;let w=0,m=0,D=0;if((await s__default.promises.stat(u)).isDirectory()){await ensureTargetDir(t);const a=await readDirRecursive(u,F),y=(await Promise.all(a.map(async r=>{const n=await s__default.promises.stat(r);return{path:r,isFile:n.isFile()}}))).filter(r=>r.isFile).map(r=>r.path);for(const r of y){const n=l__default.relative(u,r),p=l__default.join(t,n);await ensureTargetDir(l__default.dirname(p));let c=o;if(!c)try{await s__default.promises.access(p,s__default.constants.F_OK),c=!1}catch{c=!0}E&&c&&(c=await shouldUpdateFile(r,p)),c?(await s__default.promises.copyFile(r,p),w++):m++}D=(await Promise.all(a.map(async r=>{const n=await s__default.promises.stat(r);return{path:r,isDirectory:n.isDirectory()}}))).filter(r=>r.isDirectory).length}else{await ensureTargetDir(l__default.dirname(t));let a=o;if(!a)try{await s__default.promises.access(t,s__default.constants.F_OK),a=!1}catch{a=!0}E&&a&&(a=await shouldUpdateFile(u,t)),a?(await s__default.promises.copyFile(u,t),w++):m++}const f=Date.now()-i;return{copiedFiles:w,skippedFiles:m,copiedDirs:D,executionTime:f}}async function writeFileContent(u,t){try{await s__default.promises.writeFile(u,t,"utf-8")}catch(e){const i=e;throw i.code==="EACCES"?new Error(`\u5199\u5165\u6587\u4EF6\u5931\u8D25\uFF1A\u6CA1\u6709\u6743\u9650\u5199\u5165\u6587\u4EF6 - ${u}`):new Error(`\u5199\u5165\u6587\u4EF6\u5931\u8D25\uFF1A\u5199\u5165\u6587\u4EF6\u65F6\u51FA\u9519 - ${u}\uFF0C\u9519\u8BEF\uFF1A${i.message}`)}}function readFileSync(u){try{return s__default.readFileSync(u,"utf-8")}catch(t){const e=t;throw e.code==="EACCES"?new Error(`\u8BFB\u53D6\u6587\u4EF6\u5931\u8D25\uFF1A\u6CA1\u6709\u6743\u9650\u8BFB\u53D6\u6587\u4EF6 - ${u}`):new Error(`\u8BFB\u53D6\u6587\u4EF6\u5931\u8D25\uFF1A\u8BFB\u53D6\u6587\u4EF6\u65F6\u51FA\u9519 - ${u}\uFF0C\u9519\u8BEF\uFF1A${e.message}`)}}exports.checkSourceExists=checkSourceExists,exports.copySourceToTarget=copySourceToTarget,exports.ensureTargetDir=ensureTargetDir,exports.readDirRecursive=readDirRecursive,exports.readFileSync=readFileSync,exports.shouldUpdateFile=shouldUpdateFile,exports.writeFileContent=writeFileContent;