@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.
- package/README-en.md +164 -150
- package/README.md +143 -84
- package/dist/common/index.cjs +1 -1
- package/dist/common/index.d.cts +132 -6
- package/dist/common/index.d.mts +132 -6
- package/dist/common/index.d.ts +132 -6
- package/dist/common/index.mjs +1 -1
- package/dist/factory/index.cjs +1 -1
- package/dist/factory/index.mjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +1 -1
- package/dist/logger/index.cjs +1 -1
- package/dist/logger/index.mjs +1 -1
- package/dist/plugins/index.cjs +1 -1
- package/dist/plugins/index.d.cts +166 -1
- package/dist/plugins/index.d.mts +166 -1
- package/dist/plugins/index.d.ts +166 -1
- package/dist/plugins/index.mjs +1 -1
- package/dist/shared/vite-plugin.B88RyRN8.mjs +3 -0
- package/dist/shared/vite-plugin.C7isVPKg.mjs +1 -0
- package/dist/shared/vite-plugin.D6NYITpX.cjs +1 -0
- package/dist/shared/vite-plugin.D8HTI0Ni.cjs +2 -0
- package/dist/shared/vite-plugin.Dd2ogbSe.mjs +2 -0
- package/dist/shared/vite-plugin.DqWt65U-.cjs +1 -0
- package/dist/shared/vite-plugin.HZb-1B5l.mjs +1 -0
- package/dist/shared/vite-plugin.IGZeStMa.cjs +3 -0
- package/package.json +72 -72
- package/dist/shared/vite-plugin.BT1oHRKK.cjs +0 -1
- package/dist/shared/vite-plugin.BTKhc7n7.cjs +0 -3
- package/dist/shared/vite-plugin.BZqhBDYR.mjs +0 -1
- package/dist/shared/vite-plugin.Bn8mcCzy.cjs +0 -3
- package/dist/shared/vite-plugin.CY2ydccp.mjs +0 -3
- package/dist/shared/vite-plugin.ClHiVXD6.mjs +0 -1
- package/dist/shared/vite-plugin.DSRKYuae.mjs +0 -3
- 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.
|
|
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;
|