@fchc8/vite-plugin-multi-page
Version:
A powerful Vite plugin for building multi-page applications with smart file routing and multi-strategy builds
120 lines (118 loc) • 24.6 kB
JavaScript
;var le=Object.create;var U=Object.defineProperty;var ge=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var fe=Object.getPrototypeOf,ue=Object.prototype.hasOwnProperty;var de=(t,e)=>{for(var i in e)U(t,i,{get:e[i],enumerable:!0})},J=(t,e,i,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of pe(e))!ue.call(t,n)&&n!==i&&U(t,n,{get:()=>e[n],enumerable:!(r=ge(e,n))||r.enumerable});return t};var $=(t,e,i)=>(i=t!=null?le(fe(t)):{},J(e||!t||!t.__esModule?U(i,"default",{value:t,enumerable:!0}):i,t)),me=t=>J(U({},"__esModule",{value:!0}),t);var Pe={};de(Pe,{cleanViteOutputDirectory:()=>ee,default:()=>Se,defineConfig:()=>se,defineConfigTransform:()=>ie,generateBuildConfig:()=>N,getAvailableStrategies:()=>te,getViteOutputDirectory:()=>Y,mergeWithDefaults:()=>D,reorganizeAssetsInCLI:()=>be,viteMultiPage:()=>ce});module.exports=me(Pe);var d=$(require("fs")),h=$(require("path")),q=require("vite");var w=$(require("path")),L=$(require("fs")),K=require("glob");var O=$(require("path"));function R(t,e,i,r){let n=[],p=new Map,u=e.replace(/\/\*.*$/,"");(!u||u===e)&&(u=O.dirname(e.split("*")[0]));let l=[];for(let a of t){if(i.includes(a))continue;let g=a.replace(/\\/g,"/"),f=u.replace(/\\/g,"/"),c=O.posix.relative(f,g).split("/");if(c.length===1){let o=c[0],m=O.posix.basename(o,O.posix.extname(o));l.push({name:m,file:a,priority:1})}else if(c.length>=2){let o=O.posix.basename(g,O.posix.extname(g)),m=c[0];o==="main"&&l.push({name:m,file:a,priority:2})}}for(let a of l){let g=p.get(a.name);g?a.priority>g.priority&&p.set(a.name,{file:a.file,priority:a.priority}):p.set(a.name,{file:a.file,priority:a.priority})}for(let[a,{file:g}]of p.entries())n.push({name:a,file:g});return n}function Q(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function k(t){return(...e)=>{t&&console.log("[vite-plugin-multi-page]",...e)}}function _(t,e,i){if(!t)return null;if(typeof t=="function")return t(e);for(let[r,n]of Object.entries(t)){if(r===e.pageName)return i(`\u7CBE\u786E\u5339\u914D\u9875\u9762 ${e.pageName}:`,n),n;if(n.match&&(Array.isArray(n.match)?n.match:[n.match]).some(l=>B(l,e.pageName)||B(l,e.relativePath)||B(l,e.filePath)))return i(`\u6A21\u5F0F\u5339\u914D\u9875\u9762 ${e.pageName} (\u6A21\u5F0F: ${n.match}):`,n),{...n,match:void 0};if(B(r,e.pageName))return i(`Glob\u5339\u914D\u9875\u9762 ${e.pageName} (\u6A21\u5F0F: ${r}):`,n),n}return null}function B(t,e){let i=t.replace(/\*\*/g,"__DOUBLE_STAR__").replace(/\*/g,"[^/]*").replace(/__DOUBLE_STAR__/g,".*");return new RegExp(`^${i}$`).test(e)}function ye(t,e,i){try{let r=K.glob.sync(e.entry,{cwd:process.cwd()}),n=R(r,e.entry,e.exclude,i);if(n.length===0){i("\u8B66\u544A: \u672A\u627E\u5230\u5339\u914D\u7684\u5165\u53E3\u6587\u4EF6");return}let p=e.devStrategy||t.config.__cliStrategy||t.config.strategy;p&&(i(`\u5F00\u53D1\u670D\u52A1\u5668\u4F7F\u7528\u6307\u5B9A\u7684\u7B56\u7565: ${p}`),n=n.filter(u=>{let l={pageName:u.name,filePath:u.file,relativePath:w.relative(process.cwd(),u.file),strategy:void 0,isMatched:!1},a=_(e.pageConfigs,l,i),g=(a==null?void 0:a.strategy)||"default";return p==="default"?g==="default":g===p}),i(`\u7B56\u7565 "${p}" \u4E0B\u53EF\u7528\u7684\u9875\u9762: ${n.map(u=>u.name).join(", ")||"\u65E0"}`)),i("\u5F00\u53D1\u670D\u52A1\u5668\u5E94\u7528\u7684\u5165\u53E3\u6587\u4EF6:",n),t.middlewares.use(async(u,l,a)=>{try{let f=(u.url||"").split("?")[0];if(f==="/"){let o=xe(n,e,i);l.statusCode=200,l.setHeader("Content-Type","text/html"),l.end(o);return}if(f.match(/\.(js|css|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot|map)$/)&&!f.endsWith(".html")||f.startsWith("/@")||f.includes("__vite")||f.startsWith("/node_modules"))return a();let s="";if(f.endsWith(".html"))s=w.basename(f,".html");else if(f.startsWith("/")){let o=f.substring(1);if(n.find(m=>m.name===o))s=o;else{let m=o.split("/");if(m.length>1){let C=m[0];n.find(x=>x.name===C)&&(s=C,i(`History \u8DEF\u7531\u5339\u914D: ${f} -> ${C}`))}}}if(!s)return a();let c=n.find(o=>o.name===s);return c?he(l,c,e,i):a()}catch(g){i(`\u5F00\u53D1\u670D\u52A1\u5668\u5904\u7406\u8BF7\u6C42\u5931\u8D25: ${g}`),a(g)}}),i("\u5F00\u53D1\u670D\u52A1\u5668\u914D\u7F6E\u5B8C\u6210")}catch(r){throw i(`\u914D\u7F6E\u5F00\u53D1\u670D\u52A1\u5668\u5931\u8D25: ${r}`),r}}function he(t,e,i,r){var f;let n={pageName:e.name,filePath:e.file,relativePath:w.relative(process.cwd(),e.file),strategy:void 0,isMatched:!1},p=_(i.pageConfigs,n,r);if(p!=null&&p.strategy)n.strategy=p.strategy;else if((f=i.appliedStrategies)!=null&&f.has(e.name)){let s=i.appliedStrategies.get(e.name);s&&(n.strategy=s)}let u="",l=w.resolve(process.cwd(),`${e.name}.html`);if(L.existsSync(l)?u=l:p!=null&&p.template?u=w.resolve(process.cwd(),p.template):u=w.resolve(process.cwd(),i.template),!L.existsSync(u)){t.statusCode=404,t.end("Template not found");return}let a=L.readFileSync(u,"utf-8");if(a.includes(i.placeholder)){let s=a;if(a=a.split(i.placeholder).join(`/${e.file}`),a===s){let c=Q(i.placeholder),o=new RegExp(c,"g");a=s.replace(o,`/${e.file}`),a===s&&(a=s.replace(/\{\{ENTRY_FILE\}\}/g,`/${e.file}`))}}if(p!=null&&p.define){let s=Object.entries(p.define).map(([c,o])=>{let m=typeof o=="string"?`"${o}"`:JSON.stringify(o);return`window.${c} = ${m};`}).join(`
`);s&&(a=a.replace(/<\/head>/i,`<script type="text/javascript">
${s}
</script>
</head>`))}t.statusCode=200,t.setHeader("Content-Type","text/html"),t.end(a)}var X=ye;function xe(t,e,i){try{let r=t.map(n=>{var g;let p={pageName:n.name,filePath:n.file,relativePath:w.relative(process.cwd(),n.file),strategy:void 0,isMatched:!1},u=_(e.pageConfigs,p,i),l="default";if(u!=null&&u.strategy)l=u.strategy;else if((g=e.appliedStrategies)!=null&&g.has(n.name)){let f=e.appliedStrategies.get(n.name);f&&(l=f)}let a=l!=="default"?`<span class="badge">${l}</span>`:"";return`
<div class="page-item">
<a href="${n.name}.html" class="page-link">
${n.name}${a}
</a>
<div class="page-path">${n.file}</div>
</div>`}).join("");return`
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>\u591A\u9875\u9762\u5E94\u7528\u7D22\u5F15</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
line-height: 1.6;
color: #333;
max-width: 1200px;
margin: 0 auto;
padding: 20px;
background-color: #f5f5f7;
}
h1 {
font-size: 24px;
margin-bottom: 20px;
color: #111;
}
.page-list {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 16px;
}
.page-item {
background-color: white;
border-radius: 8px;
padding: 16px;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
transition: transform 0.2s, box-shadow 0.2s;
}
.page-item:hover {
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}
.page-link {
display: flex;
align-items: center;
justify-content: space-between;
font-size: 18px;
font-weight: 500;
color: #0066cc;
text-decoration: none;
margin-bottom: 8px;
}
.page-path {
font-size: 14px;
color: #666;
word-break: break-all;
}
.badge {
display: inline-block;
font-size: 12px;
padding: 2px 8px;
border-radius: 12px;
background-color: #e6f2ff;
color: #0066cc;
margin-left: 8px;
}
.stats {
margin-bottom: 20px;
font-size: 14px;
color: #666;
}
</style>
</head>
<body>
<h1>\u591A\u9875\u9762\u5E94\u7528\u7D22\u5F15</h1>
<div class="stats">
\u627E\u5230 ${t.length} \u4E2A\u9875\u9762
</div>
<div class="page-list">
${r}
</div>
</body>
</html>
`}catch(r){return i(`\u751F\u6210\u7D22\u5F15\u9875\u5931\u8D25: ${r}`),`
<!DOCTYPE html>
<html>
<head>
<title>\u9519\u8BEF</title>
</head>
<body>
<h1>\u751F\u6210\u7D22\u5F15\u9875\u65F6\u53D1\u751F\u9519\u8BEF</h1>
<p>${r}</p>
</body>
</html>
`}}var Z=require("vite"),W=require("glob"),P=$(require("path")),E=$(require("fs"));function N(t){var s;let{entry:e="src/pages/*/main.{ts,js}",exclude:i=[],template:r="index.html",placeholder:n="<!--VITE_MULTI_PAGE_ENTRY-->",strategies:p={},pageConfigs:u={},forceBuildStrategy:l,forceBuildPage:a}=t,g=k(!0),f={};try{let c=W.glob.sync(e,{cwd:process.cwd()}),o=R(c,e,i,g);if(o.length===0)return g("\u8B66\u544A: \u672A\u627E\u5230\u5339\u914D\u7684\u5165\u53E3\u6587\u4EF6"),{};let m=new Map,C=new Map;for(let y of o){let v={pageName:y.name,filePath:y.file,relativePath:P.relative(process.cwd(),y.file)},S=_(u,v,g),b=(S==null?void 0:S.strategy)||"default";m.set(y.name,b),C.has(b)||C.set(b,[]),(s=C.get(b))==null||s.push(y.name)}if(g(`\u{1F4C4} \u53D1\u73B0 ${o.length} \u4E2A\u9875\u9762: ${o.map(y=>y.name).join(", ")}`),a){if(!o.find(I=>I.name===a))return g(`\u8B66\u544A: \u672A\u627E\u5230\u9875\u9762 "${a}"`),{};let v=m.get(a)||"default",S=p[v]||{},b=V(`single-${a}`,[a],o,S,u,r,n,g);return f[`single-${a}`]=b,f}if(l){let y=C.get(l)||[];if(y.length===0)return g(`\u8B66\u544A: \u7B56\u7565 "${l}" \u4E0B\u6CA1\u6709\u9875\u9762`),{};g(`\u5F3A\u5236\u6784\u5EFA\u7B56\u7565: ${l}, \u9875\u9762: ${y.join(", ")}`);let v=V(l,y,o,p[l],u,r,n,g);return f[l]=v,f}for(let[y,v]of C){if(v.length===0)continue;let S=p[y]||{},b=V(y,v,o,S,u,r,n,g);f[y]=b}if(Object.keys(f).length===0){g("\u8B66\u544A: \u672A\u751F\u6210\u4EFB\u4F55\u6784\u5EFA\u914D\u7F6E\uFF0C\u521B\u5EFA\u9ED8\u8BA4\u914D\u7F6E");let y=o.map(S=>S.name),v=V("default",y,o,{},u,r,n,g);f.default=v}let x=Object.keys(f);return g(`\u{1F4E6} \u6784\u5EFA\u7B56\u7565: ${x.join(", ")}`),f}catch(c){throw g("\u751F\u6210\u6784\u5EFA\u914D\u7F6E\u5931\u8D25:",c),c}}function V(t,e,i,r,n,p,u,l){let a={},g=[],f={};for(let o of e){let m=i.find(G=>G.name===o);if(!m)continue;let C={pageName:o,filePath:m.file,relativePath:P.relative(process.cwd(),m.file),strategy:t},x=_(n,C,l);x!=null&&x.define&&Object.assign(f,x.define);let y=p,v=`${o}.html`;E.existsSync(P.resolve(process.cwd(),v))?y=v:x!=null&&x.template&&(y=x.template);let S=P.resolve(process.cwd(),y);if(!E.existsSync(S)){l(`\u8B66\u544A: \u6A21\u677F\u6587\u4EF6\u4E0D\u5B58\u5728: ${y}`);continue}let b=E.readFileSync(S,"utf-8");if(b.includes(u)){let G=`./${m.file}`;b=b.replace(new RegExp(u.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),G)}let I=P.resolve(process.cwd(),`.temp.mp.${o}.html`);E.writeFileSync(I,b),g.push(I),a[o]=I}let s={build:{rollupOptions:{input:a,output:{entryFileNames:"assets/[name]-[hash].js",chunkFileNames:"assets/[name]-[hash].js",assetFileNames:"assets/[name]-[hash][extname]"}},emptyOutDir:!1},define:{}},c=s;return r&&(c=(0,Z.mergeConfig)(s,r)),Object.keys(f).length>0&&(c.define={...c.define,...f}),c.build||(c.build={}),c.build.rollupOptions||(c.build.rollupOptions={}),c.build.rollupOptions.input=a,c.build.emptyOutDir=!1,l(`\u7B56\u7565 "${t}" - ${e.length} \u4E2A\u9875\u9762`),c}function Y(t=[]){let e=t.findIndex(r=>r==="--outDir");if(e!==-1&&e+1<t.length){let r=t[e+1];return P.resolve(process.cwd(),r)}let i=t.find(r=>r.startsWith("--outDir="));if(i){let r=i.split("=")[1];return P.resolve(process.cwd(),r)}return P.resolve(process.cwd(),"dist")}function ee(t=[]){let e=Y(t),i=k(!0);try{E.existsSync(e)&&(E.rmSync(e,{recursive:!0,force:!0}),i(`\u{1F9F9} \u6E05\u7406\u8F93\u51FA\u76EE\u5F55: ${P.relative(process.cwd(),e)}`))}catch(r){i(`\u26A0\uFE0F \u6E05\u7406\u8F93\u51FA\u76EE\u5F55\u5931\u8D25: ${e}`,r)}}function te(t){let{entry:e="src/pages/*/main.{ts,js}",exclude:i=[],pageConfigs:r={}}=t,n=k(!1),p=new Set,u=W.glob.sync(e,{cwd:process.cwd()}),l=R(u,e,i,n);if(l.length===0)throw new Error(`\u672A\u627E\u5230\u5339\u914D\u7684\u5165\u53E3\u6587\u4EF6: ${e}`);try{for(let a of l){let g={pageName:a.name,filePath:a.file,relativePath:P.relative(process.cwd(),a.file)},f=_(r,g,n),s=(f==null?void 0:f.strategy)||"default";p.add(s)}return Array.from(p).sort()}catch(a){return n("\u83B7\u53D6\u53EF\u7528\u7B56\u7565\u5931\u8D25:",a),["default"]}}var M=$(require("fs")),j=$(require("path")),ne=require("url"),A=require("module"),re=["multipage.config.js","multipage.config.mjs","multipage.config.ts"];function H(){for(let t of re){let e=j.resolve(process.cwd(),t);if(M.existsSync(e))return!0}return!1}async function z(t){let e=await ve();if(e){let i=e(t);return i||{}}return null}async function Ce(t){if(t.endsWith(".ts"))try{let e=await M.promises.readFile(t,"utf-8"),i;try{i=await import("esbuild")}catch{throw console.error(`
\u274C \u65E0\u6CD5\u52A0\u8F7D TypeScript \u914D\u7F6E\u6587\u4EF6\uFF0C\u56E0\u4E3A\u627E\u4E0D\u5230 esbuild \u4F9D\u8D56\u3002`),console.error(`
\u{1F4A1} \u8BF7\u9009\u62E9\u4EE5\u4E0B\u89E3\u51B3\u65B9\u6848\u4E4B\u4E00\uFF1A`),console.error(' 1. \u5B89\u88C5 esbuild (peerDependency)\uFF1Anpm install esbuild@">=0.19.3" --save-dev'),console.error(" 2. \u6216\u8005\u5982\u679C\u4F7F\u7528 Vite \u9879\u76EE\uFF0Cesbuild \u901A\u5E38\u5DF2\u5B89\u88C5\uFF0C\u8BF7\u68C0\u67E5\u7248\u672C\u662F\u5426 >=0.19.3"),console.error(" 3. \u4F7F\u7528 JavaScript \u914D\u7F6E\u6587\u4EF6\uFF1A\u5C06 multipage.config.ts \u91CD\u547D\u540D\u4E3A multipage.config.js"),console.error(` 4. \u4F7F\u7528 ESM \u914D\u7F6E\u6587\u4EF6\uFF1A\u5C06 multipage.config.ts \u91CD\u547D\u540D\u4E3A multipage.config.mjs
`),new Error(`\u9700\u8981 esbuild \u4F9D\u8D56\u6765\u5904\u7406 TypeScript \u914D\u7F6E\u6587\u4EF6: ${j.basename(t)}`)}let r=await i.transform(e,{loader:"ts",format:"cjs",target:"node16",sourcemap:!1}),n=new A.Module(t);return n.filename=t,n.paths=A.Module._nodeModulePaths(j.dirname(t)),n._compile(r.code,t),n.exports}catch(e){if(e instanceof Error&&e.message.includes("\u9700\u8981 esbuild \u4F9D\u8D56"))throw e;console.warn("esbuild \u8F6C\u8BD1\u5931\u8D25\uFF0C\u5C1D\u8BD5\u7B80\u5355\u8F6C\u6362:",e);let r=(await M.promises.readFile(t,"utf-8")).replace(/export\s+default\s+/,"module.exports = ").replace(/import\s+.*?from\s+['"][^'"]*['"];?\s*/g,"").replace(/:\s*[^=,})\]]+/g,""),n=new A.Module(t);return n.filename=t,n.paths=A.Module._nodeModulePaths(j.dirname(t)),n._compile(r,t),n.exports}if(t.endsWith(".js")||t.endsWith(".mjs"))return import(`${(0,ne.pathToFileURL)(t).href}?t=${Date.now()}`);throw new Error(`\u4E0D\u652F\u6301\u7684\u914D\u7F6E\u6587\u4EF6\u7C7B\u578B: ${t}`)}async function ve(){let t=process.cwd();for(let e of re){let i=j.resolve(t,e);if(M.existsSync(i))try{let r=await Ce(i),n=r.default||r;if(typeof n=="function")return n;console.warn(`\u914D\u7F6E\u6587\u4EF6 ${e} \u5FC5\u987B\u9ED8\u8BA4\u5BFC\u51FA\u4E00\u4E2A\u51FD\u6570`)}catch(r){e.endsWith(".ts")?(console.error(`\u52A0\u8F7DTypeScript\u914D\u7F6E\u6587\u4EF6 ${e} \u5931\u8D25:`,r),console.log("\u63D0\u793A\uFF1A\u786E\u4FDD\u4F60\u7684\u9879\u76EE\u652F\u6301TypeScript\uFF0C\u6216\u8005\u4F7F\u7528 .js/.mjs \u914D\u7F6E\u6587\u4EF6")):console.error(`\u52A0\u8F7D\u914D\u7F6E\u6587\u4EF6 ${e} \u5931\u8D25:`,r)}}return null}var F={entry:"src/pages/**/*.{ts,js}",exclude:[],template:"index.html",placeholder:"{{ENTRY_FILE}}",debug:!1,merge:"all",strategies:{default:{}},pageConfigs:{},pageEnvs:()=>null};function D(t){return t?{entry:t.entry??F.entry,exclude:t.exclude??F.exclude,template:t.template??F.template,placeholder:t.placeholder??F.placeholder,debug:t.debug??F.debug,merge:t.merge??F.merge,strategies:t.strategies??F.strategies,pageConfigs:t.pageConfigs??F.pageConfigs,pageEnvs:t.pageEnvs??F.pageEnvs,__forceBuildStrategy:t.__forceBuildStrategy}:{...F}}var oe=$(require("glob"));function se(t){return typeof t=="function"?t:()=>t}function ie(t){return t}function ae(t,e,i,r){let n=h.resolve(t,"assets");if(!d.existsSync(n)){r("assets\u76EE\u5F55\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u91CD\u7EC4");return}let p=d.readdirSync(t).filter(s=>s.endsWith(".html")).map(s=>h.resolve(t,s));if(p.length===0){if(r("\u672A\u627E\u5230HTML\u6587\u4EF6\uFF0C\u4F46\u4ECD\u9700\u6E05\u7406assets\u76EE\u5F55"),(e==="strategy"||e==="page")&&d.existsSync(n))try{d.rmSync(n,{recursive:!0,force:!0}),r("\u5F3A\u5236\u6E05\u7406\u6574\u4E2A\u6839\u76EE\u5F55assets\u76EE\u5F55 (strategy/page\u6A21\u5F0F)")}catch(s){r("\u6E05\u7406\u6839\u76EE\u5F55assets\u5931\u8D25:",s)}return}let u=new Map,l=new Map;p.forEach(s=>{var S;let c=h.basename(s,".html");c.startsWith(".temp.mp.")&&(c=c.replace(".temp.mp.",""));let o=d.readFileSync(s,"utf-8"),m=[],C=/(?:src|href)="\/assets\/([^"]+)"/g,x;for(;(x=C.exec(o))!==null;){let b=x[1];m.push(b),l.has(b)||l.set(b,[]),(S=l.get(b))==null||S.push(c)}let y="";e==="page"&&(y=c);let v=h.resolve(t,y);u.set(c,{assets:m,targetDir:v}),r(`\u9875\u9762 ${c} \u4F9D\u8D56\u8D44\u6E90:`,m)}),r("\u7B2C\u4E00\u9636\u6BB5\u8865\u5145\uFF1A\u5206\u6790public\u76EE\u5F55\u8D44\u6E90");let a=new Set,g=h.resolve(process.cwd(),"public");if(d.existsSync(g)){let s=oe.sync("**/*",{cwd:g,nodir:!0});for(let c of s)a.add(c),r(`\u53D1\u73B0public\u8D44\u6E90: ${c}`)}l.forEach((s,c)=>{s.length>1?r(`\u5171\u4EAB\u8D44\u6E90 ${c} \u88AB\u9875\u9762\u4F7F\u7528:`,s):r(`\u72EC\u5360\u8D44\u6E90 ${c} \u4EC5\u88AB\u9875\u9762 ${s[0]} \u4F7F\u7528`)}),u.forEach(({assets:s,targetDir:c},o)=>{let m=h.resolve(c,"assets");d.existsSync(m)||d.mkdirSync(m,{recursive:!0}),s.forEach(C=>{let x=h.resolve(n,C),y=h.resolve(m,C);if(d.existsSync(x)){d.copyFileSync(x,y);let S=(l.get(C)||[]).length>1?"\u5171\u4EAB\u8D44\u6E90":"\u72EC\u5360\u8D44\u6E90";r(`\u590D\u5236${S}\u5230 ${o}: assets/${C} -> ${h.relative(t,y)}`)}else r(`\u8B66\u544A: \u8D44\u6E90\u6587\u4EF6\u4E0D\u5B58\u5728: ${x}`)}),d.existsSync(n)&&d.readdirSync(n).forEach(x=>{if(!s.includes(x)){let y=h.resolve(n,x),v=h.resolve(m,x);d.existsSync(y)&&(d.copyFileSync(y,v),r(`\u590D\u5236\u5176\u4ED6\u8D44\u6E90\u6587\u4EF6\u5230 ${o}: assets/${x} -> ${h.relative(t,v)}`))}})}),r("\u7B2C\u4E09\u9636\u6BB5\u8865\u5145\uFF1A\u5904\u7406public\u76EE\u5F55\u8D44\u6E90");let f=new Set;u.forEach(({targetDir:s})=>{f.add(s)});for(let s of f)for(let c of a){let o=h.resolve(t,c),m=h.resolve(s,c);if(d.existsSync(o)){let C=h.dirname(m);d.existsSync(C)||d.mkdirSync(C,{recursive:!0}),d.copyFileSync(o,m),r(`\u590D\u5236public\u8D44\u6E90: ${c} -> ${h.relative(t,m)}`)}}if(u.forEach(({targetDir:s},c)=>{let o=h.resolve(t,`${c}.html`),m=c;if(d.existsSync(o)||(o=h.resolve(t,`.temp.mp.${c}.html`),d.existsSync(o)&&(m=c)),d.existsSync(o)){let C=d.readFileSync(o,"utf-8");C=C.replace(/(?:src|href)="\/assets\//g,v=>v.replace("/assets/","./assets/"));let x;e==="strategy"?x=h.resolve(s,`${m}.html`):e==="page"?x=h.resolve(s,"index.html"):x=o,d.writeFileSync(x,C),x!==o&&d.unlinkSync(o);let y=h.relative(t,x);r(`\u6309${e}\u5206\u7EC4\u79FB\u52A8HTML\u6587\u4EF6: ${m}.html -> ${y}`)}else r(`\u8B66\u544A: \u672A\u627E\u5230HTML\u6587\u4EF6: ${c}.html \u6216 .temp.mp.${c}.html`)}),d.existsSync(n))if(e==="strategy"||e==="page")try{d.rmSync(n,{recursive:!0,force:!0}),r("\u5F3A\u5236\u6E05\u7406\u6574\u4E2A\u6839\u76EE\u5F55assets\u76EE\u5F55 (strategy/page\u6A21\u5F0F)")}catch(s){r("\u6E05\u7406\u6839\u76EE\u5F55assets\u5931\u8D25:",s)}else{l.forEach((c,o)=>{let m=h.resolve(n,o);d.existsSync(m)&&(d.unlinkSync(m),r(`\u6E05\u7406\u539F\u59CB\u8D44\u6E90\u6587\u4EF6: assets/${o}`))});let s=d.readdirSync(n);s.length===0?(d.rmdirSync(n),r("\u6E05\u7406\u7A7A\u7684assets\u76EE\u5F55")):r("assets\u76EE\u5F55\u4E2D\u8FD8\u6709\u672A\u5904\u7406\u7684\u6587\u4EF6:",s)}(e==="strategy"||e==="page")&&a.size>0&&(r("\u7B2C\u4E94\u9636\u6BB5\u8865\u5145\uFF1A\u6E05\u7406\u6839\u76EE\u5F55\u7684public\u8D44\u6E90"),a.forEach(s=>{let c=h.resolve(t,s);if(d.existsSync(c))try{d.unlinkSync(c),r(`\u5220\u9664\u6839\u76EE\u5F55public\u8D44\u6E90: ${s}`)}catch(o){r(`\u5220\u9664\u6839\u76EE\u5F55public\u8D44\u6E90\u5931\u8D25: ${s}`,o)}}),a.forEach(s=>{let c=h.resolve(t,s),o=h.dirname(c);for(;o!==t&&o!==h.dirname(o);)try{if(d.existsSync(o)&&d.readdirSync(o).length===0)d.rmdirSync(o),r(`\u5220\u9664\u7A7A\u76EE\u5F55: ${h.relative(t,o)}`),o=h.dirname(o);else break}catch{break}}))}function ce(t){let e,i=[],r=()=>{};return{name:"vite-multi-page",async configResolved(n){let p=null;H()&&(p=await z({mode:n.command==="serve"?"development":"production",command:n.command,isCLI:!1}));let u=D(p);e=t?t(u,{mode:n.command==="serve"?"development":"production",command:n.command,isCLI:!1}):u,r=e.debug??!1?console.log.bind(console,"[vite-multi-page]"):()=>{},r("Vite\u914D\u7F6E\u5DF2\u89E3\u6790, \u4F7F\u7528\u914D\u7F6E:",{strategies:Object.keys(e.strategies||{}),entry:e.entry})},async config(n,{command:p}){var u;if(p==="serve"){let l=process.argv,a=l.find(g=>g.startsWith("--strategy="));if(a){let g=a.split("=")[1];g&&(process.env.VITE_MULTI_PAGE_STRATEGY=g)}else{let g=l.findIndex(f=>f==="--strategy");if(g!==-1&&g+1<l.length){let f=l[g+1];process.env.VITE_MULTI_PAGE_STRATEGY=f}}process.env.VITE_MULTI_PAGE_STRATEGY||(process.env.VITE_MULTI_PAGE_STRATEGY="default")}if(p==="build"){if(!e){let s=null;H()&&(s=await z({mode:"production",command:"build",isCLI:!1}));let c=D(s);e=t?t(c,{mode:"production",command:"build",isCLI:!1}):c,r=e.debug??!1?console.log.bind(console,"[vite-multi-page]"):()=>{}}r("\u914D\u7F6E\u6784\u5EFA\u6A21\u5F0F");let l=process.env.VITE_MULTI_PAGE_BUILD_SINGLE_PAGE;if(l){r(`\u5355\u9875\u9762\u6784\u5EFA\u6A21\u5F0F: ${l}`);let s=N({entry:e.entry||"src/pages/**/*.{ts,js}",exclude:e.exclude||[],template:e.template||"index.html",placeholder:e.placeholder||"{{ENTRY_FILE}}",merge:e.merge||"all",strategies:e.strategies||{},pageConfigs:e.pageConfigs||{},forceBuildStrategy:void 0,forceBuildPage:l}),c=Object.values(s);if(c.length>0){let o=c[0],m=(0,q.mergeConfig)(n,o);Object.assign(n,m),r(`\u5DF2\u5E94\u7528\u5355\u9875\u9762\u6784\u5EFA\u914D\u7F6E: ${l}`);return}else throw new Error(`\u672A\u627E\u5230\u9875\u9762: ${l}`)}let a=process.env.VITE_MULTI_PAGE_STRATEGY,g=N({entry:e.entry||"src/pages/**/*.{ts,js}",exclude:e.exclude||[],template:e.template||"index.html",placeholder:e.placeholder||"{{ENTRY_FILE}}",merge:e.merge||"all",strategies:e.strategies||{},pageConfigs:e.pageConfigs||{},forceBuildStrategy:a}),f=Object.keys(g)[0];if(f&&g[f]){r(`\u5E94\u7528\u6784\u5EFA\u7B56\u7565: ${f}`);let s=g[f],c=(0,q.mergeConfig)(n,s);Object.assign(n,c),r(`\u5DF2\u5E94\u7528\u7B56\u7565 "${f}" \u7684\u914D\u7F6E:`,{build:!!s.build,define:!!s.define,plugins:((u=s.plugins)==null?void 0:u.length)||0})}else throw r("\u672A\u627E\u5230\u53EF\u7528\u7684\u6784\u5EFA\u7B56\u7565\uFF0C\u4F7F\u7528\u9ED8\u8BA4\u914D\u7F6E"),new Error(`\u274C \u6784\u5EFA\u5931\u8D25: \u672A\u627E\u5230\u4EFB\u4F55\u6784\u5EFA\u7B56\u7565
\u53EF\u80FD\u7684\u539F\u56E0\uFF1A
1. \u914D\u7F6E\u6587\u4EF6\u8FD4\u56DE\u7A7A\u5BF9\u8C61 {}
2. \u672A\u627E\u5230\u5339\u914D\u7684\u5165\u53E3\u6587\u4EF6
3. \u6A21\u677F\u6587\u4EF6\u4E0D\u5B58\u5728
4. \u672A\u914D\u7F6E strategies \u5BF9\u8C61
\u6700\u5C0F\u914D\u7F6E\u793A\u4F8B\uFF1A
export default () => ({
entry: "src/pages/**/*.{ts,js}",
template: "index.html",
strategies: {
default: {}
}
});`)}},configureServer(n){if(n.config.command==="serve"){r("\u914D\u7F6E\u5F00\u53D1\u670D\u52A1\u5668");let p=process.env.VITE_MULTI_PAGE_STRATEGY||"default";r(`\u5F00\u53D1\u6A21\u5F0F\u7B56\u7565: ${p}`),X(n,{entry:e.entry||"src/pages/**/*.{ts,js}",exclude:e.exclude||[],template:e.template||"index.html",placeholder:e.placeholder||"{{ENTRY_FILE}}",strategies:e.strategies||{},pageConfigs:e.pageConfigs||{},devStrategy:p},r)}},writeBundle(n){if(!(e!=null&&e.merge)||e.merge==="all")return;let p=n.dir||"dist",u=e.merge;r(`\u5E94\u7528\u6784\u5EFA\u4EA7\u7269\u5408\u5E76\u6A21\u5F0F: ${u}`);try{ae(p,u,e,r)}catch(l){throw r("\u8D44\u6E90\u91CD\u7EC4\u5931\u8D25:",l),l}},buildEnd(){i.length>0&&(r(`\u6E05\u7406 ${i.length} \u4E2A\u4E34\u65F6\u6587\u4EF6`),i.forEach(n=>{try{d.existsSync(n)&&(d.unlinkSync(n),r(`\u5220\u9664\u4E34\u65F6\u6587\u4EF6: ${n}`))}catch(p){r(`\u5220\u9664\u4E34\u65F6\u6587\u4EF6\u5931\u8D25: ${n}`,p)}}),i.length=0)}}}function be(t,e,i,r){return ae(t,e,i,r)}var Se=ce;0&&(module.exports={cleanViteOutputDirectory,defineConfig,defineConfigTransform,generateBuildConfig,getAvailableStrategies,getViteOutputDirectory,mergeWithDefaults,reorganizeAssetsInCLI,viteMultiPage});
//# sourceMappingURL=index.js.map