@fchc8/vite-plugin-multi-page 1.8.0 → 1.9.2
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 +15 -0
- package/README.md +15 -0
- package/dist/cli.js +124 -6
- package/dist/index.d.mts +7 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.js +12 -9
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +15 -12
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/README-EN.md
CHANGED
|
@@ -196,6 +196,21 @@ strategies: {
|
|
|
196
196
|
}
|
|
197
197
|
```
|
|
198
198
|
|
|
199
|
+
### Build Output Merge Strategy
|
|
200
|
+
|
|
201
|
+
Control how build outputs are organized using the `merge` option:
|
|
202
|
+
|
|
203
|
+
```typescript
|
|
204
|
+
export default defineConfig({
|
|
205
|
+
// ... other configurations
|
|
206
|
+
merge: 'all' | 'strategy' | 'page',
|
|
207
|
+
});
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
- **`all`** (default): All HTML files in root directory, assets merged into `/dist/assets/`
|
|
211
|
+
- **`strategy`**: Group by strategy, e.g., `/dist/mobile/page1.html`, `/dist/desktop/page1.html`
|
|
212
|
+
- **`page`**: Group by page, e.g., `/dist/homePage/index.html`, `/dist/aboutPage/index.html`
|
|
213
|
+
|
|
199
214
|
### Page Strategy Assignment
|
|
200
215
|
|
|
201
216
|
Assign strategies to pages through the `pageConfigs` function:
|
package/README.md
CHANGED
|
@@ -196,6 +196,21 @@ strategies: {
|
|
|
196
196
|
}
|
|
197
197
|
```
|
|
198
198
|
|
|
199
|
+
### 构建产物合并策略
|
|
200
|
+
|
|
201
|
+
通过 `merge` 选项控制构建产物的组织方式:
|
|
202
|
+
|
|
203
|
+
```typescript
|
|
204
|
+
export default defineConfig({
|
|
205
|
+
// ... 其他配置
|
|
206
|
+
merge: 'all' | 'strategy' | 'page',
|
|
207
|
+
});
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
- **`all`** (默认): 所有HTML文件放在根目录,资源合并到 `/dist/assets/`
|
|
211
|
+
- **`strategy`**: 按策略分组,如 `/dist/mobile/page1.html`、`/dist/desktop/page1.html`
|
|
212
|
+
- **`page`**: 按页面分组,如 `/dist/homePage/index.html`、`/dist/aboutPage/index.html`
|
|
213
|
+
|
|
199
214
|
### 页面策略分配
|
|
200
215
|
|
|
201
216
|
通过 `pageConfigs` 函数为页面分配策略:
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,123 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var
|
|
2
|
+
"use strict";var _e=Object.create;var Y=Object.defineProperty;var De=Object.getOwnPropertyDescriptor;var Me=Object.getOwnPropertyNames;var je=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var T=(t,e)=>()=>(t&&(e=t(t=0)),e);var B=(t,e)=>{for(var o in e)Y(t,o,{get:e[o],enumerable:!0})},le=(t,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Me(e))!Re.call(t,n)&&n!==o&&Y(t,n,{get:()=>e[n],enumerable:!(s=De(e,n))||s.enumerable});return t};var w=(t,e,o)=>(o=t!=null?_e(je(t)):{},le(e||!t||!t.__esModule?Y(o,"default",{value:t,enumerable:!0}):o,t)),Ie=t=>le(Y({},"__esModule",{value:!0}),t);var C=T(()=>{"use strict"});function V(t,e,o,s){let n=[],a=new Map,c=e.replace(/\/\*.*$/,"");(!c||c===e)&&(c=M.dirname(e.split("*")[0]));let l=[];for(let r of t){if(o.includes(r))continue;let i=r.replace(/\\/g,"/"),g=c.replace(/\\/g,"/"),d=M.posix.relative(g,i).split("/");if(d.length===1){let f=d[0],u=M.posix.basename(f,M.posix.extname(f));l.push({name:u,file:r,priority:1})}else if(d.length>=2){let f=M.posix.basename(i,M.posix.extname(i)),u=d[0];f==="main"&&l.push({name:u,file:r,priority:2})}}for(let r of l){let i=a.get(r.name);i?r.priority>i.priority&&a.set(r.name,{file:r.file,priority:r.priority}):a.set(r.name,{file:r.file,priority:r.priority})}for(let[r,{file:i}]of a.entries())n.push({name:r,file:i});return n}var M,ee=T(()=>{"use strict";C();M=w(require("path"))});function j(t,e,o){if(!t)return null;if(typeof t=="function"){let s=t(e);return s}for(let[s,n]of Object.entries(t)){if(s===e.pageName)return o(`\u7CBE\u786E\u5339\u914D\u9875\u9762 ${e.pageName}:`,n),n;if(n.match&&(Array.isArray(n.match)?n.match:[n.match]).some(l=>z(l,e.pageName)||z(l,e.relativePath)||z(l,e.filePath)))return o(`\u6A21\u5F0F\u5339\u914D\u9875\u9762 ${e.pageName} (\u6A21\u5F0F: ${n.match}):`,n),{...n,match:void 0};if(z(s,e.pageName))return o(`Glob\u5339\u914D\u9875\u9762 ${e.pageName} (\u6A21\u5F0F: ${s}):`,n),n}return null}function z(t,e){let o=t.replace(/\*\*/g,"__DOUBLE_STAR__").replace(/\*/g,"[^/]*").replace(/__DOUBLE_STAR__/g,".*");return new RegExp(`^${o}$`).test(e)}var te=T(()=>{"use strict";C()});function ge(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function q(t){return(...e)=>{t&&console.log("[vite-plugin-multi-page]",...e)}}var se=T(()=>{"use strict";C()});var ae={};B(ae,{cleanViteOutputDirectory:()=>oe,generateBuildConfig:()=>W,getAvailableStrategies:()=>ie,getViteOutputDirectory:()=>L});function W(t){var g;let{entry:e="src/pages/*/main.{ts,js}",exclude:o=[],template:s="index.html",placeholder:n="<!--VITE_MULTI_PAGE_ENTRY-->",strategies:a={},pageConfigs:c={},forceBuildStrategy:l}=t,r=q(!0),i={};try{let p=re.glob.sync(e,{cwd:process.cwd()}),d=V(p,e,o,r);if(d.length===0)return r("\u8B66\u544A: \u672A\u627E\u5230\u5339\u914D\u7684\u5165\u53E3\u6587\u4EF6"),{};let f=new Map,u=new Map;for(let m of d){let v={pageName:m.name,filePath:m.file,relativePath:P.relative(process.cwd(),m.file)},S=j(c,v,r),E=(S==null?void 0:S.strategy)||"default";f.set(m.name,E),u.has(E)||u.set(E,[]),(g=u.get(E))==null||g.push(m.name)}if(r(`\u{1F4C4} \u53D1\u73B0 ${d.length} \u4E2A\u9875\u9762: ${d.map(m=>m.name).join(", ")}`),l){let m=u.get(l)||[];if(m.length===0)return r(`\u8B66\u544A: \u7B56\u7565 "${l}" \u4E0B\u6CA1\u6709\u9875\u9762`),{};r(`\u5F3A\u5236\u6784\u5EFA\u7B56\u7565: ${l}, \u9875\u9762: ${m.join(", ")}`);let v=ne(l,m,d,a[l],c,s,n,r);return i[l]=v,i}for(let[m,v]of u){if(v.length===0)continue;let S=a[m]||{},E=ne(m,v,d,S,c,s,n,r);i[m]=E}if(Object.keys(i).length===0){r("\u8B66\u544A: \u672A\u751F\u6210\u4EFB\u4F55\u6784\u5EFA\u914D\u7F6E\uFF0C\u521B\u5EFA\u9ED8\u8BA4\u914D\u7F6E");let m=d.map(S=>S.name),v=ne("default",m,d,{},c,s,n,r);i.default=v}let b=Object.keys(i);return r(`\u{1F4E6} \u6784\u5EFA\u7B56\u7565: ${b.join(", ")}`),i}catch(p){throw r("\u751F\u6210\u6784\u5EFA\u914D\u7F6E\u5931\u8D25:",p),p}}function ne(t,e,o,s,n,a,c,l){let r={},i=[],g={};for(let f of e){let u=o.find(Z=>Z.name===f);if(!u)continue;let b={pageName:f,filePath:u.file,relativePath:P.relative(process.cwd(),u.file),strategy:t},m=j(n,b,l);m!=null&&m.define&&Object.assign(g,m.define);let v=a,S=`${f}.html`;O.existsSync(P.resolve(process.cwd(),S))?v=S:m!=null&&m.template&&(v=m.template);let E=P.resolve(process.cwd(),v);if(!O.existsSync(E)){l(`\u8B66\u544A: \u6A21\u677F\u6587\u4EF6\u4E0D\u5B58\u5728: ${v}`);continue}let I=O.readFileSync(E,"utf-8");if(I.includes(c)){let Z=`./${u.file}`;I=I.replace(new RegExp(c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),Z)}let k=P.resolve(process.cwd(),`.temp.mp.${f}.html`);O.writeFileSync(k,I),i.push(k),r[f]=k}let p={build:{rollupOptions:{input:r,output:{entryFileNames:"assets/[name]-[hash].js",chunkFileNames:"assets/[name]-[hash].js",assetFileNames:"assets/[name]-[hash][extname]"}},emptyOutDir:!1},define:{}},d=p;return s&&(d=(0,pe.mergeConfig)(p,s)),Object.keys(g).length>0&&(d.define={...d.define,...g}),d.build||(d.build={}),d.build.rollupOptions||(d.build.rollupOptions={}),d.build.rollupOptions.input=r,d.build.emptyOutDir=!1,l(`\u7B56\u7565 "${t}" - ${e.length} \u4E2A\u9875\u9762`),d}function L(t=[]){let e=t.findIndex(s=>s==="--outDir");if(e!==-1&&e+1<t.length){let s=t[e+1];return P.resolve(process.cwd(),s)}let o=t.find(s=>s.startsWith("--outDir="));if(o){let s=o.split("=")[1];return P.resolve(process.cwd(),s)}return P.resolve(process.cwd(),"dist")}function oe(t=[]){let e=L(t),o=q(!0);try{O.existsSync(e)&&(O.rmSync(e,{recursive:!0,force:!0}),o(`\u{1F9F9} \u6E05\u7406\u8F93\u51FA\u76EE\u5F55: ${P.relative(process.cwd(),e)}`))}catch(s){o(`\u26A0\uFE0F \u6E05\u7406\u8F93\u51FA\u76EE\u5F55\u5931\u8D25: ${e}`,s)}}function ie(t){let{entry:e="src/pages/*/main.{ts,js}",exclude:o=[],pageConfigs:s={}}=t,n=q(!1),a=new Set,c=re.glob.sync(e,{cwd:process.cwd()}),l=V(c,e,o,n);if(l.length===0)throw new Error(`\u672A\u627E\u5230\u5339\u914D\u7684\u5165\u53E3\u6587\u4EF6: ${e}`);try{for(let r of l){let i={pageName:r.name,filePath:r.file,relativePath:P.relative(process.cwd(),r.file)},g=j(s,i,n),p=(g==null?void 0:g.strategy)||"default";a.add(p)}return Array.from(a).sort()}catch(r){return n("\u83B7\u53D6\u53EF\u7528\u7B56\u7565\u5931\u8D25:",r),["default"]}}var pe,re,P,O,A=T(()=>{"use strict";C();pe=require("vite"),re=require("glob"),P=w(require("path")),O=w(require("fs"));ee();te();se()});var de={};B(de,{hasCustomConfig:()=>J,loadUserConfig:()=>Q});function J(){for(let t of me){let e=R.resolve(process.cwd(),t);if(N.existsSync(e))return!0}return!1}async function Q(t){let e=await Ae();if(e){let o=e(t);return o||{}}return null}async function Le(t){if(t.endsWith(".ts"))try{let e=await N.promises.readFile(t,"utf-8"),o;try{o=await import("esbuild")}catch{throw console.error(`
|
|
3
|
+
\u274C \u65E0\u6CD5\u52A0\u8F7D TypeScript \u914D\u7F6E\u6587\u4EF6\uFF0C\u56E0\u4E3A\u627E\u4E0D\u5230 esbuild \u4F9D\u8D56\u3002`),console.error(`
|
|
4
|
+
\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
|
|
5
|
+
`),new Error(`\u9700\u8981 esbuild \u4F9D\u8D56\u6765\u5904\u7406 TypeScript \u914D\u7F6E\u6587\u4EF6: ${R.basename(t)}`)}let s=await o.transform(e,{loader:"ts",format:"cjs",target:"node16",sourcemap:!1}),n=new H.Module(t);return n.filename=t,n.paths=H.Module._nodeModulePaths(R.dirname(t)),n._compile(s.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 s=(await N.promises.readFile(t,"utf-8")).replace(/export\s+default\s+/,"module.exports = ").replace(/import\s+.*?from\s+['"][^'"]*['"];?\s*/g,"").replace(/:\s*[^=,})\]]+/g,""),n=new H.Module(t);return n.filename=t,n.paths=H.Module._nodeModulePaths(R.dirname(t)),n._compile(s,t),n.exports}if(t.endsWith(".js")||t.endsWith(".mjs"))return import(`${(0,fe.pathToFileURL)(t).href}?t=${Date.now()}`);throw new Error(`\u4E0D\u652F\u6301\u7684\u914D\u7F6E\u6587\u4EF6\u7C7B\u578B: ${t}`)}async function Ae(){let t=process.cwd();for(let e of me){let o=R.resolve(t,e);if(N.existsSync(o))try{let s=await Le(o),n=s.default||s;if(typeof n=="function")return n;console.warn(`\u914D\u7F6E\u6587\u4EF6 ${e} \u5FC5\u987B\u9ED8\u8BA4\u5BFC\u51FA\u4E00\u4E2A\u51FD\u6570`)}catch(s){e.endsWith(".ts")?(console.error(`\u52A0\u8F7DTypeScript\u914D\u7F6E\u6587\u4EF6 ${e} \u5931\u8D25:`,s),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:`,s)}}return null}var N,R,fe,H,me,ce=T(()=>{"use strict";C();N=w(require("fs")),R=w(require("path")),fe=require("url"),H=require("module"),me=["multipage.config.js","multipage.config.mjs","multipage.config.ts"]});var ue={};B(ue,{DEFAULT_CONFIG:()=>F,isEmptyConfig:()=>Ne,mergeWithDefaults:()=>U});function U(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,__forceBuildStrategy:t.__forceBuildStrategy}:{...F}}function Ne(t){if(Object.keys(t).length===0)return!0;let e=t.entry&&t.entry!==F.entry,o=t.strategies&&Object.keys(t.strategies).length>0,s=t.pageConfigs&&(typeof t.pageConfigs=="function"||Object.keys(t.pageConfigs).length>0);return!e&&!o&&!s}var F,K=T(()=>{"use strict";C();F={entry:"src/pages/**/*.{ts,js}",exclude:[],template:"index.html",placeholder:"{{ENTRY_FILE}}",debug:!1,merge:"all",strategies:{default:{}},pageConfigs:{}}});function Ue(t,e,o){try{let s=he.glob.sync(e.entry,{cwd:process.cwd()}),n=V(s,e.entry,e.exclude,o);if(n.length===0){o("\u8B66\u544A: \u672A\u627E\u5230\u5339\u914D\u7684\u5165\u53E3\u6587\u4EF6");return}let a=e.devStrategy||t.config.__cliStrategy||t.config.strategy;a&&(o(`\u5F00\u53D1\u670D\u52A1\u5668\u4F7F\u7528\u6307\u5B9A\u7684\u7B56\u7565: ${a}`),n=n.filter(c=>{let l={pageName:c.name,filePath:c.file,relativePath:_.relative(process.cwd(),c.file),strategy:void 0,isMatched:!1},r=j(e.pageConfigs,l,o),i=(r==null?void 0:r.strategy)||"default";return a==="default"?i==="default":i===a}),o(`\u7B56\u7565 "${a}" \u4E0B\u53EF\u7528\u7684\u9875\u9762: ${n.map(c=>c.name).join(", ")||"\u65E0"}`)),o("\u5F00\u53D1\u670D\u52A1\u5668\u5E94\u7528\u7684\u5165\u53E3\u6587\u4EF6:",n),t.middlewares.use(async(c,l,r)=>{try{let g=(c.url||"").split("?")[0];if(g==="/"){let f=Be(n,e,o);l.statusCode=200,l.setHeader("Content-Type","text/html"),l.end(f);return}if(g.match(/\.(js|css|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot|map)$/)&&!g.endsWith(".html")||g.startsWith("/@")||g.includes("__vite")||g.startsWith("/node_modules"))return r();let p="";if(g.endsWith(".html"))p=_.basename(g,".html");else if(g.startsWith("/")){let f=g.substring(1);if(n.find(u=>u.name===f))p=f;else{let u=f.split("/");if(u.length>1){let b=u[0];n.find(m=>m.name===b)&&(p=b,o(`History \u8DEF\u7531\u5339\u914D: ${g} -> ${b}`))}}}if(!p)return r();let d=n.find(f=>f.name===p);return d?ke(l,d,e,o):r()}catch(i){o(`\u5F00\u53D1\u670D\u52A1\u5668\u5904\u7406\u8BF7\u6C42\u5931\u8D25: ${i}`),r(i)}}),o("\u5F00\u53D1\u670D\u52A1\u5668\u914D\u7F6E\u5B8C\u6210")}catch(s){throw o(`\u914D\u7F6E\u5F00\u53D1\u670D\u52A1\u5668\u5931\u8D25: ${s}`),s}}function ke(t,e,o,s){var g;let n={pageName:e.name,filePath:e.file,relativePath:_.relative(process.cwd(),e.file),strategy:void 0,isMatched:!1},a=j(o.pageConfigs,n,s);if(a!=null&&a.strategy)n.strategy=a.strategy;else if((g=o.appliedStrategies)!=null&&g.has(e.name)){let p=o.appliedStrategies.get(e.name);p&&(n.strategy=p)}let c="",l=_.resolve(process.cwd(),`${e.name}.html`);if(G.existsSync(l)?c=l:a!=null&&a.template?c=_.resolve(process.cwd(),a.template):c=_.resolve(process.cwd(),o.template),!G.existsSync(c)){t.statusCode=404,t.end("Template not found");return}let r=G.readFileSync(c,"utf-8");if(r.includes(o.placeholder)){let p=r;if(r=r.split(o.placeholder).join(`/${e.file}`),r===p){let d=ge(o.placeholder),f=new RegExp(d,"g");r=p.replace(f,`/${e.file}`),r===p&&(r=p.replace(/\{\{ENTRY_FILE\}\}/g,`/${e.file}`))}}if(a!=null&&a.define){let p=Object.entries(a.define).map(([d,f])=>{let u=typeof f=="string"?`"${f}"`:JSON.stringify(f);return`window.${d} = ${u};`}).join(`
|
|
6
|
+
`);p&&(r=r.replace(/<\/head>/i,`<script type="text/javascript">
|
|
7
|
+
${p}
|
|
8
|
+
</script>
|
|
9
|
+
</head>`))}t.statusCode=200,t.setHeader("Content-Type","text/html"),t.end(r)}function Be(t,e,o){try{let s=t.map(n=>{var i;let a={pageName:n.name,filePath:n.file,relativePath:_.relative(process.cwd(),n.file),strategy:void 0,isMatched:!1},c=j(e.pageConfigs,a,o),l="default";if(c!=null&&c.strategy)l=c.strategy;else if((i=e.appliedStrategies)!=null&&i.has(n.name)){let g=e.appliedStrategies.get(n.name);g&&(l=g)}let r=l!=="default"?`<span class="badge">${l}</span>`:"";return`
|
|
10
|
+
<div class="page-item">
|
|
11
|
+
<a href="${n.name}.html" class="page-link">
|
|
12
|
+
${n.name}${r}
|
|
13
|
+
</a>
|
|
14
|
+
<div class="page-path">${n.file}</div>
|
|
15
|
+
</div>`}).join("");return`
|
|
16
|
+
<!DOCTYPE html>
|
|
17
|
+
<html lang="en">
|
|
18
|
+
<head>
|
|
19
|
+
<meta charset="UTF-8">
|
|
20
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
21
|
+
<title>\u591A\u9875\u9762\u5E94\u7528\u7D22\u5F15</title>
|
|
22
|
+
<style>
|
|
23
|
+
body {
|
|
24
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
25
|
+
line-height: 1.6;
|
|
26
|
+
color: #333;
|
|
27
|
+
max-width: 1200px;
|
|
28
|
+
margin: 0 auto;
|
|
29
|
+
padding: 20px;
|
|
30
|
+
background-color: #f5f5f7;
|
|
31
|
+
}
|
|
32
|
+
h1 {
|
|
33
|
+
font-size: 24px;
|
|
34
|
+
margin-bottom: 20px;
|
|
35
|
+
color: #111;
|
|
36
|
+
}
|
|
37
|
+
.page-list {
|
|
38
|
+
display: grid;
|
|
39
|
+
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
|
40
|
+
gap: 16px;
|
|
41
|
+
}
|
|
42
|
+
.page-item {
|
|
43
|
+
background-color: white;
|
|
44
|
+
border-radius: 8px;
|
|
45
|
+
padding: 16px;
|
|
46
|
+
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
|
|
47
|
+
transition: transform 0.2s, box-shadow 0.2s;
|
|
48
|
+
}
|
|
49
|
+
.page-item:hover {
|
|
50
|
+
transform: translateY(-2px);
|
|
51
|
+
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
|
|
52
|
+
}
|
|
53
|
+
.page-link {
|
|
54
|
+
display: flex;
|
|
55
|
+
align-items: center;
|
|
56
|
+
justify-content: space-between;
|
|
57
|
+
font-size: 18px;
|
|
58
|
+
font-weight: 500;
|
|
59
|
+
color: #0066cc;
|
|
60
|
+
text-decoration: none;
|
|
61
|
+
margin-bottom: 8px;
|
|
62
|
+
}
|
|
63
|
+
.page-path {
|
|
64
|
+
font-size: 14px;
|
|
65
|
+
color: #666;
|
|
66
|
+
word-break: break-all;
|
|
67
|
+
}
|
|
68
|
+
.badge {
|
|
69
|
+
display: inline-block;
|
|
70
|
+
font-size: 12px;
|
|
71
|
+
padding: 2px 8px;
|
|
72
|
+
border-radius: 12px;
|
|
73
|
+
background-color: #e6f2ff;
|
|
74
|
+
color: #0066cc;
|
|
75
|
+
margin-left: 8px;
|
|
76
|
+
}
|
|
77
|
+
.stats {
|
|
78
|
+
margin-bottom: 20px;
|
|
79
|
+
font-size: 14px;
|
|
80
|
+
color: #666;
|
|
81
|
+
}
|
|
82
|
+
</style>
|
|
83
|
+
</head>
|
|
84
|
+
<body>
|
|
85
|
+
<h1>\u591A\u9875\u9762\u5E94\u7528\u7D22\u5F15</h1>
|
|
86
|
+
<div class="stats">
|
|
87
|
+
\u627E\u5230 ${t.length} \u4E2A\u9875\u9762
|
|
88
|
+
</div>
|
|
89
|
+
<div class="page-list">
|
|
90
|
+
${s}
|
|
91
|
+
</div>
|
|
92
|
+
</body>
|
|
93
|
+
</html>
|
|
94
|
+
`}catch(s){return o(`\u751F\u6210\u7D22\u5F15\u9875\u5931\u8D25: ${s}`),`
|
|
95
|
+
<!DOCTYPE html>
|
|
96
|
+
<html>
|
|
97
|
+
<head>
|
|
98
|
+
<title>\u9519\u8BEF</title>
|
|
99
|
+
</head>
|
|
100
|
+
<body>
|
|
101
|
+
<h1>\u751F\u6210\u7D22\u5F15\u9875\u65F6\u53D1\u751F\u9519\u8BEF</h1>
|
|
102
|
+
<p>${s}</p>
|
|
103
|
+
</body>
|
|
104
|
+
</html>
|
|
105
|
+
`}}var _,G,he,ye,xe=T(()=>{"use strict";C();_=w(require("path")),G=w(require("fs")),he=require("glob");ee();se();te();ye=Ue});function ve(t){return typeof t=="function"?t:()=>t}function Ce(t){return t}var be=T(()=>{"use strict";C()});var Pe={};B(Pe,{cleanViteOutputDirectory:()=>oe,default:()=>We,defineConfig:()=>ve,defineConfigTransform:()=>Ce,generateBuildConfig:()=>W,getAvailableStrategies:()=>ie,getViteOutputDirectory:()=>L,mergeWithDefaults:()=>U,reorganizeAssetsInCLI:()=>Ve,viteMultiPage:()=>we});function Se(t,e,o,s){let n=$.resolve(t,"assets");if(!y.existsSync(n)){s("assets\u76EE\u5F55\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u91CD\u7EC4");return}let a=y.readdirSync(t).filter(r=>r.endsWith(".html")).map(r=>$.resolve(t,r));if(a.length===0){s("\u672A\u627E\u5230HTML\u6587\u4EF6\uFF0C\u8DF3\u8FC7\u91CD\u7EC4");return}let c=new Map,l=new Map;if(a.forEach(r=>{var m;let i=$.basename(r,".html");i.startsWith(".temp.mp.")&&(i=i.replace(".temp.mp.",""));let g=y.readFileSync(r,"utf-8"),p=[],d=/(?:src|href)="\/assets\/([^"]+)"/g,f;for(;(f=d.exec(g))!==null;){let v=f[1];p.push(v),l.has(v)||l.set(v,[]),(m=l.get(v))==null||m.push(i)}let u="";e==="strategy"?u="default":e==="page"&&(u=i);let b=$.resolve(t,u);c.set(i,{assets:p,targetDir:b}),s(`\u9875\u9762 ${i} \u4F9D\u8D56\u8D44\u6E90:`,p)}),l.forEach((r,i)=>{r.length>1?s(`\u5171\u4EAB\u8D44\u6E90 ${i} \u88AB\u9875\u9762\u4F7F\u7528:`,r):s(`\u72EC\u5360\u8D44\u6E90 ${i} \u4EC5\u88AB\u9875\u9762 ${r[0]} \u4F7F\u7528`)}),c.forEach(({assets:r,targetDir:i},g)=>{let p=$.resolve(i,"assets");y.existsSync(p)||y.mkdirSync(p,{recursive:!0}),r.forEach(d=>{let f=$.resolve(n,d),u=$.resolve(p,d);y.existsSync(f)?(y.copyFileSync(f,u),s(`\u590D\u5236\u8D44\u6E90\u6587\u4EF6\u5230 ${g}: assets/${d} -> ${$.relative(t,u)}`)):s(`\u8B66\u544A: \u8D44\u6E90\u6587\u4EF6\u4E0D\u5B58\u5728: ${f}`)})}),c.forEach(({targetDir:r},i)=>{let g=$.resolve(t,`${i}.html`),p=i;if(y.existsSync(g)||(g=$.resolve(t,`.temp.mp.${i}.html`),y.existsSync(g)&&(p=i)),y.existsSync(g)){let d=y.readFileSync(g,"utf-8");d=d.replace(/(?:src|href)="\/assets\//g,b=>b.replace("/assets/","./assets/"));let f;e==="strategy"?f=$.resolve(r,`${p}.html`):e==="page"?f=$.resolve(r,"index.html"):f=g,y.writeFileSync(f,d),f!==g&&y.unlinkSync(g);let u=$.relative(t,f);s(`\u6309${e}\u5206\u7EC4\u79FB\u52A8HTML\u6587\u4EF6: ${p}.html -> ${u}`)}else s(`\u8B66\u544A: \u672A\u627E\u5230HTML\u6587\u4EF6: ${i}.html \u6216 .temp.mp.${i}.html`)}),y.existsSync(n))if(e==="strategy"||e==="page")try{y.rmSync(n,{recursive:!0,force:!0}),s("\u5F3A\u5236\u6E05\u7406\u6574\u4E2A\u6839\u76EE\u5F55assets\u76EE\u5F55 (strategy/page\u6A21\u5F0F)")}catch(r){s("\u6E05\u7406\u6839\u76EE\u5F55assets\u5931\u8D25:",r)}else{l.forEach((i,g)=>{let p=$.resolve(n,g);y.existsSync(p)&&(y.unlinkSync(p),s(`\u6E05\u7406\u539F\u59CB\u8D44\u6E90\u6587\u4EF6: assets/${g}`))});let r=y.readdirSync(n);r.length===0?(y.rmdirSync(n),s("\u6E05\u7406\u7A7A\u7684assets\u76EE\u5F55")):s("assets\u76EE\u5F55\u4E2D\u8FD8\u6709\u672A\u5904\u7406\u7684\u6587\u4EF6:",r)}}function we(t){let e,o=[],s=()=>{};return{name:"vite-multi-page",async configResolved(n){let a=null;J()&&(a=await Q({mode:n.command==="serve"?"development":"production",command:n.command,isCLI:!1}));let c=U(a);e=t?t(c,{mode:n.command==="serve"?"development":"production",command:n.command,isCLI:!1}):c,s=e.debug??!1?console.log.bind(console,"[vite-multi-page]"):()=>{},s("Vite\u914D\u7F6E\u5DF2\u89E3\u6790, \u4F7F\u7528\u914D\u7F6E:",{strategies:Object.keys(e.strategies||{}),entry:e.entry})},async config(n,{command:a}){var c;if(a==="serve"){let l=process.argv,r=l.find(i=>i.startsWith("--strategy="));if(r){let i=r.split("=")[1];i&&(process.env.VITE_MULTI_PAGE_STRATEGY=i)}else{let i=l.findIndex(g=>g==="--strategy");if(i!==-1&&i+1<l.length){let g=l[i+1];process.env.VITE_MULTI_PAGE_STRATEGY=g}}process.env.VITE_MULTI_PAGE_STRATEGY||(process.env.VITE_MULTI_PAGE_STRATEGY="default")}if(a==="build"){if(!e){let g=null;J()&&(g=await Q({mode:"production",command:"build",isCLI:!1}));let p=U(g);e=t?t(p,{mode:"production",command:"build",isCLI:!1}):p,s=e.debug??!1?console.log.bind(console,"[vite-multi-page]"):()=>{}}s("\u914D\u7F6E\u6784\u5EFA\u6A21\u5F0F");let l=process.env.VITE_MULTI_PAGE_STRATEGY,r=W({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:l}),i=Object.keys(r)[0];if(i&&r[i]){s(`\u5E94\u7528\u6784\u5EFA\u7B56\u7565: ${i}`);let g=r[i],p=(0,$e.mergeConfig)(n,g);Object.assign(n,p),s(`\u5DF2\u5E94\u7528\u7B56\u7565 "${i}" \u7684\u914D\u7F6E:`,{build:!!g.build,define:!!g.define,plugins:((c=g.plugins)==null?void 0:c.length)||0})}else throw s("\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
|
|
106
|
+
|
|
107
|
+
\u53EF\u80FD\u7684\u539F\u56E0\uFF1A
|
|
108
|
+
1. \u914D\u7F6E\u6587\u4EF6\u8FD4\u56DE\u7A7A\u5BF9\u8C61 {}
|
|
109
|
+
2. \u672A\u627E\u5230\u5339\u914D\u7684\u5165\u53E3\u6587\u4EF6
|
|
110
|
+
3. \u6A21\u677F\u6587\u4EF6\u4E0D\u5B58\u5728
|
|
111
|
+
4. \u672A\u914D\u7F6E strategies \u5BF9\u8C61
|
|
112
|
+
|
|
113
|
+
\u6700\u5C0F\u914D\u7F6E\u793A\u4F8B\uFF1A
|
|
114
|
+
export default () => ({
|
|
115
|
+
entry: "src/pages/**/*.{ts,js}",
|
|
116
|
+
template: "index.html",
|
|
117
|
+
strategies: {
|
|
118
|
+
default: {}
|
|
119
|
+
}
|
|
120
|
+
});`)}},configureServer(n){if(n.config.command==="serve"){s("\u914D\u7F6E\u5F00\u53D1\u670D\u52A1\u5668");let a=process.env.VITE_MULTI_PAGE_STRATEGY||"default";s(`\u5F00\u53D1\u6A21\u5F0F\u7B56\u7565: ${a}`),ye(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:a},s)}},writeBundle(n){if(!(e!=null&&e.merge)||e.merge==="all")return;let a=n.dir||"dist",c=e.merge;s(`\u5E94\u7528\u6784\u5EFA\u4EA7\u7269\u5408\u5E76\u6A21\u5F0F: ${c}`);try{Se(a,c,e,s)}catch(l){throw s("\u8D44\u6E90\u91CD\u7EC4\u5931\u8D25:",l),l}},buildEnd(){o.length>0&&(s(`\u6E05\u7406 ${o.length} \u4E2A\u4E34\u65F6\u6587\u4EF6`),o.forEach(n=>{try{y.existsSync(n)&&(y.unlinkSync(n),s(`\u5220\u9664\u4E34\u65F6\u6587\u4EF6: ${n}`))}catch(a){s(`\u5220\u9664\u4E34\u65F6\u6587\u4EF6\u5931\u8D25: ${n}`,a)}}),o.length=0)}}}function Ve(t,e,o,s){return Se(t,e,o,s)}var y,$,$e,We,Fe=T(()=>{"use strict";C();y=w(require("fs")),$=w(require("path")),$e=require("vite");xe();A();ce();K();be();A();K();We=we});var Ke={};B(Ke,{buildAll:()=>Oe});module.exports=Ie(Ke);C();var Ee=require("child_process"),h=w(require("fs")),x=w(require("path")),X=w(require("glob"));A();function He(){let t=process.argv.slice(2),e=[],o=!1,s,n;for(let a=0;a<t.length;a++){let c=t[a];c==="--debug"?o=!0:c==="--cwd"?s=t[++a]:c==="--strategy"?n=t[++a].split(",").map(r=>r.trim()):c==="--help"||c==="-h"?(console.log(`
|
|
3
121
|
\u4F7F\u7528\u65B9\u6CD5: vite-mp [\u9009\u9879]
|
|
4
122
|
|
|
5
123
|
\u9009\u9879:
|
|
@@ -17,8 +135,8 @@
|
|
|
17
135
|
vite-mp --debug # \u542F\u7528\u8C03\u8BD5\u6A21\u5F0F
|
|
18
136
|
vite-mp --cwd example # \u5728example\u76EE\u5F55\u8FD0\u884C
|
|
19
137
|
vite-mp --mode production --debug # \u4F20\u9012\u989D\u5916\u53C2\u6570\u7ED9vite
|
|
20
|
-
`),process.exit(0)):
|
|
21
|
-
\u53EF\u7528\u7B56\u7565: ${
|
|
22
|
-
\u{1F4CA} \u6784\u5EFA\u7ED3\u679C\u7EDF\u8BA1:`),console.log(`\u2705 \u6210\u529F: ${
|
|
23
|
-
\u274C \u5931\u8D25\u7684\u7B56\u7565:`),
|
|
24
|
-
\u{1F389} \u6240\u6709\u7B56\u7565\u6784\u5EFA\u6210\u529F\uFF01`),console.log("\u{1F4C1} \u6784\u5EFA\u7ED3\u679C\u4F4D\u4E8E: dist/"),console.log(`\u{1F310} \u751F\u6210\u7684\u9875\u9762: ${
|
|
138
|
+
`),process.exit(0)):c!=="build"&&e.push(c)}return{viteBuildArgs:e,debug:o,cwd:s,strategies:n}}async function Ge(){let{loadUserConfig:t,hasCustomConfig:e}=await Promise.resolve().then(()=>(ce(),de)),{mergeWithDefaults:o}=await Promise.resolve().then(()=>(K(),ue)),s=null;return e()?s=await t({mode:"production",command:"build",isCLI:!0}):console.log("\u2139\uFE0F \u672A\u627E\u5230\u914D\u7F6E\u6587\u4EF6\uFF0C\u4F7F\u7528\u9ED8\u8BA4\u914D\u7F6E"),o(s)}function Ye(t,e,o){return new Promise(s=>{var i;let n=o?console.log.bind(console,`[${t}]`):()=>{};n(`\u5F00\u59CB\u6784\u5EFA\u7B56\u7565: ${t}`);let a={...process.env,VITE_MULTI_PAGE_STRATEGY:t},c=["build",...e];n(`\u6267\u884C\u547D\u4EE4: npx vite ${c.join(" ")}`);let l=(0,Ee.spawn)("npx",["vite",...c],{stdio:o?"inherit":"pipe",env:a,cwd:process.cwd()}),r="";o||(i=l.stderr)==null||i.on("data",g=>{r+=g.toString()}),l.on("close",g=>{let p=g===0,d=L(e);if(p){n(`\u2705 \u7B56\u7565 ${t} \u6784\u5EFA\u6210\u529F`);try{if(h.existsSync(d)){let f=h.readdirSync(d);for(let u of f)if(u.startsWith(".temp.mp.")&&u.endsWith(".html")){let b=x.resolve(d,u),v=`${u.replace(/^\.temp\.mp\./,"").replace(/\.html$/,"")}.html`,S=x.resolve(d,v);h.renameSync(b,S),n(`\u91CD\u547D\u540DHTML: ${u} -> ${v}`)}}}catch(f){n("\u91CD\u547D\u540DHTML\u6587\u4EF6\u5931\u8D25:",f)}}else n(`\u274C \u7B56\u7565 ${t} \u6784\u5EFA\u5931\u8D25 (\u9000\u51FA\u7801: ${g})`),!o&&r&&console.error(`\u7B56\u7565 ${t} \u9519\u8BEF\u8F93\u51FA:`,r);s({strategy:t,success:p,error:p?void 0:r||`\u6784\u5EFA\u5931\u8D25\uFF0C\u9000\u51FA\u7801: ${g}`,outputDir:d})}),l.on("error",g=>{n(`\u274C \u7B56\u7565 ${t} \u6784\u5EFA\u51FA\u9519:`,g.message);let p=L(e);s({strategy:t,success:!1,error:g.message,outputDir:p})})})}async function ze(t,e,o){let s=o?console.log.bind(console,"[merge]"):()=>{};s("\u5F00\u59CB\u5408\u5E76\u6784\u5EFA\u7ED3\u679C...");let n=e.merge||"all";s(`\u4F7F\u7528\u5408\u5E76\u6A21\u5F0F: ${n}`),n==="all"?await Te(t,o):await qe(t,e,o)}async function Te(t,e){let o=e?console.log.bind(console,"[merge]"):()=>{},s=x.resolve(process.cwd(),"dist"),n=x.resolve(s,"assets");h.existsSync(n)||h.mkdirSync(n,{recursive:!0});let a=[];for(let c of t){if(!c.success)continue;let l=x.resolve(s,c.strategy);if(!h.existsSync(l)){o(`\u8B66\u544A: \u7B56\u7565\u76EE\u5F55\u4E0D\u5B58\u5728: ${l}`);continue}o(`\u5904\u7406\u7B56\u7565: ${c.strategy}`);let r=h.readdirSync(l,{withFileTypes:!0});for(let i of r){let g=x.resolve(l,i.name);if(i.isFile())if(i.name.endsWith(".html")){let p=x.resolve(s,i.name);h.copyFileSync(g,p),a.push(i.name),o(`\u590D\u5236HTML: ${i.name} -> dist/${i.name}`)}else{let p=x.resolve(s,i.name);h.copyFileSync(g,p),o(`\u590D\u5236\u6587\u4EF6: ${i.name} -> dist/${i.name}`)}else if(i.isDirectory()&&i.name==="assets"){let p=g,d=h.readdirSync(p,{withFileTypes:!0});for(let f of d){let u=x.resolve(p,f.name),b=x.resolve(n,f.name);if(f.isFile())if(h.existsSync(b)){let m=h.readFileSync(u),v=h.readFileSync(b);if(m.equals(v))o(`\u8DF3\u8FC7\u91CD\u590D\u8D44\u6E90: ${f.name}`);else{let S=x.extname(f.name),I=`${x.basename(f.name,S)}-${c.strategy}${S}`,k=x.resolve(n,I);h.copyFileSync(u,k),o(`\u590D\u5236\u8D44\u6E90(\u91CD\u547D\u540D): ${f.name} -> assets/${I}`)}}else h.copyFileSync(u,b),o(`\u590D\u5236\u8D44\u6E90: ${f.name} -> assets/${f.name}`);else if(f.isDirectory()){let m=x.resolve(n,f.name);h.existsSync(m)||h.mkdirSync(m,{recursive:!0}),h.cpSync(u,m,{recursive:!0}),o(`\u590D\u5236\u8D44\u6E90\u76EE\u5F55: ${f.name} -> assets/${f.name}`)}}}else if(i.isDirectory()){let p=x.resolve(s,i.name);h.cpSync(g,p,{recursive:!0}),o(`\u590D\u5236\u76EE\u5F55: ${i.name} -> dist/${i.name}`)}}}o("\u2705 \u6784\u5EFA\u7ED3\u679C\u5408\u5E76\u5B8C\u6210"),o(`\u{1F4C1} \u751F\u6210\u9875\u9762: ${a.join(", ")}`),o("\u{1F4E6} \u8D44\u6E90\u76EE\u5F55: dist/assets/"),o(`\u{1F527} \u5904\u7406\u7B56\u7565: ${t.filter(c=>c.success).map(c=>c.strategy).join(", ")}`)}async function qe(t,e,o){let s=o?console.log.bind(console,"[merge]"):()=>{};await Te(t,o);let n=x.resolve(process.cwd(),"dist"),a=e.merge;s(`\u5E94\u7528${a}\u6A21\u5F0F\u7684\u8D44\u6E90\u91CD\u7EC4...`);try{let{reorganizeAssetsInCLI:c}=await Promise.resolve().then(()=>(Fe(),Pe));await c(n,a,e,s),s(`\u2705 ${a}\u6A21\u5F0F\u8D44\u6E90\u91CD\u7EC4\u5B8C\u6210`)}catch(c){throw s("\u8D44\u6E90\u91CD\u7EC4\u5931\u8D25:",c),c}}async function Je(t){let e=t?console.log.bind(console,"[cleanup]"):()=>{};e("\u6E05\u7406\u4E34\u65F6HTML\u6587\u4EF6...");let o=X.sync(".temp.mp.*.html",{cwd:process.cwd()});for(let s of o){let n=x.resolve(process.cwd(),s);try{h.unlinkSync(n),e(`\u5220\u9664\u4E34\u65F6\u6587\u4EF6: ${s}`)}catch(a){e(`\u5220\u9664\u4E34\u65F6\u6587\u4EF6\u5931\u8D25: ${s}`,a)}}o.length===0?e("\u6CA1\u6709\u627E\u5230\u4E34\u65F6\u6587\u4EF6"):e(`\u2705 \u6E05\u7406\u4E86 ${o.length} \u4E2A\u4E34\u65F6\u6587\u4EF6`)}async function Qe(t,e,o){let s=o?console.log.bind(console,"[cleanup]"):()=>{};s("\u6E05\u7406\u4E34\u65F6\u6587\u4EF6...");let n=e.merge||"all",a=X.sync(".temp.mp.*.html",{cwd:process.cwd()});for(let c of a){let l=x.resolve(process.cwd(),c);try{h.unlinkSync(l),s(`\u5220\u9664\u6839\u76EE\u5F55\u4E34\u65F6\u6587\u4EF6: ${c}`)}catch(r){s(`\u5220\u9664\u6839\u76EE\u5F55\u4E34\u65F6\u6587\u4EF6\u5931\u8D25: ${c}`,r)}}for(let c of t){let l=x.resolve(process.cwd(),"dist",c);if(h.existsSync(l)){let r=X.sync("*.mp.temp.html",{cwd:l});for(let i of r){let g=x.resolve(l,i);try{h.unlinkSync(g),s(`\u5220\u9664\u7B56\u7565\u76EE\u5F55\u4E34\u65F6\u6587\u4EF6: ${c}/${i}`)}catch(p){s(`\u5220\u9664\u7B56\u7565\u76EE\u5F55\u4E34\u65F6\u6587\u4EF6\u5931\u8D25: ${c}/${i}`,p)}}}}if(n==="all"){let c=x.resolve(process.cwd(),"dist");for(let l of t){let r=x.resolve(c,l);if(h.existsSync(r))try{h.rmSync(r,{recursive:!0,force:!0}),s(`\u5220\u9664\u7B56\u7565\u76EE\u5F55: ${l}`)}catch(i){s(`\u5220\u9664\u7B56\u7565\u76EE\u5F55\u5931\u8D25: ${l}`,i)}}}else s(`\u4FDD\u7559\u7B56\u7565\u76EE\u5F55 (merge\u6A21\u5F0F: ${n})`);s("\u2705 \u6E05\u7406\u5B8C\u6210")}async function Oe(){let{viteBuildArgs:t,debug:e,cwd:o,strategies:s}=He(),n=e?console.log.bind(console,"[main]"):()=>{};if(o){let a=x.resolve(process.cwd(),o);h.existsSync(a)||(console.error(`\u274C \u6307\u5B9A\u7684\u76EE\u5F55\u4E0D\u5B58\u5728: ${a}`),process.exit(1)),process.chdir(a),n(`\u5207\u6362\u5DE5\u4F5C\u76EE\u5F55\u5230: ${a}`)}try{n("\u{1F680} \u5F00\u59CB\u591A\u7B56\u7565\u6784\u5EFA..."),n("\u{1F4CB} \u52A0\u8F7D\u914D\u7F6E...");let a=await Ge(),{getAvailableStrategies:c}=await Promise.resolve().then(()=>(A(),ae)),l=c({entry:a.entry||"src/pages/*/main.{ts,js}",exclude:a.exclude||[],template:a.template||"index.html",placeholder:a.placeholder||"{{ENTRY_FILE}}",pageConfigs:a.pageConfigs||{},strategies:a.strategies||{}});if(l.length===0)throw new Error("\u672A\u627E\u5230\u4EFB\u4F55\u6784\u5EFA\u7B56\u7565");let r;if(s&&s.length>0){let m=s.filter(v=>!l.includes(v));if(m.length>0)throw new Error(`\u6307\u5B9A\u7684\u7B56\u7565\u4E0D\u5B58\u5728: ${m.join(", ")}
|
|
139
|
+
\u53EF\u7528\u7B56\u7565: ${l.join(", ")}`);r=s,n(`\u4F7F\u7528\u6307\u5B9A\u7684\u7B56\u7565: ${r.join(", ")}`)}else r=l,n(`\u6784\u5EFA\u6240\u6709\u53EF\u7528\u7B56\u7565: ${r.join(", ")}`);n("\u{1F9F9} \u6E05\u7406\u8F93\u51FA\u76EE\u5F55...");let{cleanViteOutputDirectory:i}=await Promise.resolve().then(()=>(A(),ae));i(t),n("\u{1F528} \u5F00\u59CB\u5E76\u884C\u6784\u5EFA...");let g=r.map(m=>Ye(m,t,e)),p=await Promise.all(g),d=p.filter(m=>m.success).length,f=p.length-d;console.log(`
|
|
140
|
+
\u{1F4CA} \u6784\u5EFA\u7ED3\u679C\u7EDF\u8BA1:`),console.log(`\u2705 \u6210\u529F: ${d}`),console.log(`\u274C \u5931\u8D25: ${f}`),f>0&&(console.log(`
|
|
141
|
+
\u274C \u5931\u8D25\u7684\u7B56\u7565:`),p.filter(m=>!m.success).forEach(m=>{console.log(` - ${m.strategy}: ${m.error}`)}),await Je(e),process.exit(1)),n("\u{1F4E6} \u5408\u5E76\u6784\u5EFA\u7ED3\u679C..."),await ze(p,a,e),await Qe(r,a,e);let u=p.filter(m=>m.success),b=h.readdirSync(x.resolve(process.cwd(),"dist")).filter(m=>m.endsWith(".html"));console.log(`
|
|
142
|
+
\u{1F389} \u6240\u6709\u7B56\u7565\u6784\u5EFA\u6210\u529F\uFF01`),console.log("\u{1F4C1} \u6784\u5EFA\u7ED3\u679C\u4F4D\u4E8E: dist/"),console.log(`\u{1F310} \u751F\u6210\u7684\u9875\u9762: ${b.join(", ")}`),console.log(`\u{1F4E6} \u6784\u5EFA\u7B56\u7565: ${u.map(m=>m.strategy).join(", ")}`)}catch(a){console.error("\u274C \u6784\u5EFA\u5931\u8D25:",a instanceof Error?a.message:a),process.exit(1)}}require.main===module&&Oe().catch(t=>{console.error("\u274C \u672A\u5904\u7406\u7684\u9519\u8BEF:",t),process.exit(1)});0&&(module.exports={buildAll});
|
package/dist/index.d.mts
CHANGED
|
@@ -6,6 +6,7 @@ interface MultiPageOptions {
|
|
|
6
6
|
template?: string;
|
|
7
7
|
placeholder?: string;
|
|
8
8
|
debug?: boolean;
|
|
9
|
+
merge?: 'all' | 'strategy' | 'page';
|
|
9
10
|
strategies?: Record<string, ConfigStrategy>;
|
|
10
11
|
pageConfigs?: Record<string, PageConfig> | PageConfigFunction;
|
|
11
12
|
__forceBuildStrategy?: string;
|
|
@@ -16,6 +17,7 @@ interface BuildConfigOptions {
|
|
|
16
17
|
exclude: string[];
|
|
17
18
|
template: string;
|
|
18
19
|
placeholder: string;
|
|
20
|
+
merge?: 'all' | 'strategy' | 'page';
|
|
19
21
|
strategies?: Record<string, ConfigStrategy>;
|
|
20
22
|
pageConfigs?: Record<string, PageConfig> | PageConfigFunction;
|
|
21
23
|
forceBuildStrategy?: string;
|
|
@@ -73,5 +75,9 @@ declare function getAvailableStrategies(options: BuildConfigOptions): string[];
|
|
|
73
75
|
declare function mergeWithDefaults(userConfig: MultiPageOptions | null | undefined): MultiPageOptions;
|
|
74
76
|
|
|
75
77
|
declare function viteMultiPage(transform?: ConfigTransformFunction): Plugin;
|
|
78
|
+
/**
|
|
79
|
+
* CLI工具专用的资源重组函数
|
|
80
|
+
*/
|
|
81
|
+
declare function reorganizeAssetsInCLI(distDir: string, mode: 'strategy' | 'page', options: Options, log: (...args: any[]) => void): void;
|
|
76
82
|
|
|
77
|
-
export { type ConfigFunction, type ConfigTransformFunction, type Options, type PageConfig, type PageContext, type PluginContext, cleanViteOutputDirectory, viteMultiPage as default, defineConfig, defineConfigTransform, generateBuildConfig, getAvailableStrategies, getViteOutputDirectory, mergeWithDefaults, viteMultiPage };
|
|
83
|
+
export { type ConfigFunction, type ConfigTransformFunction, type Options, type PageConfig, type PageContext, type PluginContext, cleanViteOutputDirectory, viteMultiPage as default, defineConfig, defineConfigTransform, generateBuildConfig, getAvailableStrategies, getViteOutputDirectory, mergeWithDefaults, reorganizeAssetsInCLI, viteMultiPage };
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ interface MultiPageOptions {
|
|
|
6
6
|
template?: string;
|
|
7
7
|
placeholder?: string;
|
|
8
8
|
debug?: boolean;
|
|
9
|
+
merge?: 'all' | 'strategy' | 'page';
|
|
9
10
|
strategies?: Record<string, ConfigStrategy>;
|
|
10
11
|
pageConfigs?: Record<string, PageConfig> | PageConfigFunction;
|
|
11
12
|
__forceBuildStrategy?: string;
|
|
@@ -16,6 +17,7 @@ interface BuildConfigOptions {
|
|
|
16
17
|
exclude: string[];
|
|
17
18
|
template: string;
|
|
18
19
|
placeholder: string;
|
|
20
|
+
merge?: 'all' | 'strategy' | 'page';
|
|
19
21
|
strategies?: Record<string, ConfigStrategy>;
|
|
20
22
|
pageConfigs?: Record<string, PageConfig> | PageConfigFunction;
|
|
21
23
|
forceBuildStrategy?: string;
|
|
@@ -73,5 +75,9 @@ declare function getAvailableStrategies(options: BuildConfigOptions): string[];
|
|
|
73
75
|
declare function mergeWithDefaults(userConfig: MultiPageOptions | null | undefined): MultiPageOptions;
|
|
74
76
|
|
|
75
77
|
declare function viteMultiPage(transform?: ConfigTransformFunction): Plugin;
|
|
78
|
+
/**
|
|
79
|
+
* CLI工具专用的资源重组函数
|
|
80
|
+
*/
|
|
81
|
+
declare function reorganizeAssetsInCLI(distDir: string, mode: 'strategy' | 'page', options: Options, log: (...args: any[]) => void): void;
|
|
76
82
|
|
|
77
|
-
export { type ConfigFunction, type ConfigTransformFunction, type Options, type PageConfig, type PageContext, type PluginContext, cleanViteOutputDirectory, viteMultiPage as default, defineConfig, defineConfigTransform, generateBuildConfig, getAvailableStrategies, getViteOutputDirectory, mergeWithDefaults, viteMultiPage };
|
|
83
|
+
export { type ConfigFunction, type ConfigTransformFunction, type Options, type PageConfig, type PageContext, type PluginContext, cleanViteOutputDirectory, viteMultiPage as default, defineConfig, defineConfigTransform, generateBuildConfig, getAvailableStrategies, getViteOutputDirectory, mergeWithDefaults, reorganizeAssetsInCLI, viteMultiPage };
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`);
|
|
3
|
-
${
|
|
1
|
+
"use strict";var le=Object.create;var L=Object.defineProperty;var ce=Object.getOwnPropertyDescriptor;var ge=Object.getOwnPropertyNames;var pe=Object.getPrototypeOf,fe=Object.prototype.hasOwnProperty;var me=(t,e)=>{for(var i in e)L(t,i,{get:e[i],enumerable:!0})},J=(t,e,i,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of ge(e))!fe.call(t,n)&&n!==i&&L(t,n,{get:()=>e[n],enumerable:!(s=ce(e,n))||s.enumerable});return t};var P=(t,e,i)=>(i=t!=null?le(pe(t)):{},J(e||!t||!t.__esModule?L(i,"default",{value:t,enumerable:!0}):i,t)),de=t=>J(L({},"__esModule",{value:!0}),t);var Pe={};me(Pe,{cleanViteOutputDirectory:()=>Z,default:()=>be,defineConfig:()=>re,defineConfigTransform:()=>se,generateBuildConfig:()=>k,getAvailableStrategies:()=>ee,getViteOutputDirectory:()=>H,mergeWithDefaults:()=>D,reorganizeAssetsInCLI:()=>ve,viteMultiPage:()=>ae});module.exports=de(Pe);var y=P(require("fs")),x=P(require("path")),ie=require("vite");var S=P(require("path")),I=P(require("fs")),Q=require("glob");var O=P(require("path"));function j(t,e,i,s){let n=[],c=new Map,g=e.replace(/\/\*.*$/,"");(!g||g===e)&&(g=O.dirname(e.split("*")[0]));let l=[];for(let r of t){if(i.includes(r))continue;let o=r.replace(/\\/g,"/"),a=g.replace(/\\/g,"/"),f=O.posix.relative(a,o).split("/");if(f.length===1){let m=f[0],u=O.posix.basename(m,O.posix.extname(m));l.push({name:u,file:r,priority:1})}else if(f.length>=2){let m=O.posix.basename(o,O.posix.extname(o)),u=f[0];m==="main"&&l.push({name:u,file:r,priority:2})}}for(let r of l){let o=c.get(r.name);o?r.priority>o.priority&&c.set(r.name,{file:r.file,priority:r.priority}):c.set(r.name,{file:r.file,priority:r.priority})}for(let[r,{file:o}]of c.entries())n.push({name:r,file:o});return n}function q(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function U(t){return(...e)=>{t&&console.log("[vite-plugin-multi-page]",...e)}}function T(t,e,i){if(!t)return null;if(typeof t=="function"){let s=t(e);return s}for(let[s,n]of Object.entries(t)){if(s===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=>A(l,e.pageName)||A(l,e.relativePath)||A(l,e.filePath)))return i(`\u6A21\u5F0F\u5339\u914D\u9875\u9762 ${e.pageName} (\u6A21\u5F0F: ${n.match}):`,n),{...n,match:void 0};if(A(s,e.pageName))return i(`Glob\u5339\u914D\u9875\u9762 ${e.pageName} (\u6A21\u5F0F: ${s}):`,n),n}return null}function A(t,e){let i=t.replace(/\*\*/g,"__DOUBLE_STAR__").replace(/\*/g,"[^/]*").replace(/__DOUBLE_STAR__/g,".*");return new RegExp(`^${i}$`).test(e)}function ue(t,e,i){try{let s=Q.glob.sync(e.entry,{cwd:process.cwd()}),n=j(s,e.entry,e.exclude,i);if(n.length===0){i("\u8B66\u544A: \u672A\u627E\u5230\u5339\u914D\u7684\u5165\u53E3\u6587\u4EF6");return}let c=e.devStrategy||t.config.__cliStrategy||t.config.strategy;c&&(i(`\u5F00\u53D1\u670D\u52A1\u5668\u4F7F\u7528\u6307\u5B9A\u7684\u7B56\u7565: ${c}`),n=n.filter(g=>{let l={pageName:g.name,filePath:g.file,relativePath:S.relative(process.cwd(),g.file),strategy:void 0,isMatched:!1},r=T(e.pageConfigs,l,i),o=(r==null?void 0:r.strategy)||"default";return c==="default"?o==="default":o===c}),i(`\u7B56\u7565 "${c}" \u4E0B\u53EF\u7528\u7684\u9875\u9762: ${n.map(g=>g.name).join(", ")||"\u65E0"}`)),i("\u5F00\u53D1\u670D\u52A1\u5668\u5E94\u7528\u7684\u5165\u53E3\u6587\u4EF6:",n),t.middlewares.use(async(g,l,r)=>{try{let a=(g.url||"").split("?")[0];if(a==="/"){let m=he(n,e,i);l.statusCode=200,l.setHeader("Content-Type","text/html"),l.end(m);return}if(a.match(/\.(js|css|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot|map)$/)&&!a.endsWith(".html")||a.startsWith("/@")||a.includes("__vite")||a.startsWith("/node_modules"))return r();let p="";if(a.endsWith(".html"))p=S.basename(a,".html");else if(a.startsWith("/")){let m=a.substring(1);if(n.find(u=>u.name===m))p=m;else{let u=m.split("/");if(u.length>1){let v=u[0];n.find(d=>d.name===v)&&(p=v,i(`History \u8DEF\u7531\u5339\u914D: ${a} -> ${v}`))}}}if(!p)return r();let f=n.find(m=>m.name===p);return f?ye(l,f,e,i):r()}catch(o){i(`\u5F00\u53D1\u670D\u52A1\u5668\u5904\u7406\u8BF7\u6C42\u5931\u8D25: ${o}`),r(o)}}),i("\u5F00\u53D1\u670D\u52A1\u5668\u914D\u7F6E\u5B8C\u6210")}catch(s){throw i(`\u914D\u7F6E\u5F00\u53D1\u670D\u52A1\u5668\u5931\u8D25: ${s}`),s}}function ye(t,e,i,s){var a;let n={pageName:e.name,filePath:e.file,relativePath:S.relative(process.cwd(),e.file),strategy:void 0,isMatched:!1},c=T(i.pageConfigs,n,s);if(c!=null&&c.strategy)n.strategy=c.strategy;else if((a=i.appliedStrategies)!=null&&a.has(e.name)){let p=i.appliedStrategies.get(e.name);p&&(n.strategy=p)}let g="",l=S.resolve(process.cwd(),`${e.name}.html`);if(I.existsSync(l)?g=l:c!=null&&c.template?g=S.resolve(process.cwd(),c.template):g=S.resolve(process.cwd(),i.template),!I.existsSync(g)){t.statusCode=404,t.end("Template not found");return}let r=I.readFileSync(g,"utf-8");if(r.includes(i.placeholder)){let p=r;if(r=r.split(i.placeholder).join(`/${e.file}`),r===p){let f=q(i.placeholder),m=new RegExp(f,"g");r=p.replace(m,`/${e.file}`),r===p&&(r=p.replace(/\{\{ENTRY_FILE\}\}/g,`/${e.file}`))}}if(c!=null&&c.define){let p=Object.entries(c.define).map(([f,m])=>{let u=typeof m=="string"?`"${m}"`:JSON.stringify(m);return`window.${f} = ${u};`}).join(`
|
|
2
|
+
`);p&&(r=r.replace(/<\/head>/i,`<script type="text/javascript">
|
|
3
|
+
${p}
|
|
4
4
|
</script>
|
|
5
|
-
</head>`))}t.statusCode=200,t.setHeader("Content-Type","text/html"),t.end(r)}var
|
|
5
|
+
</head>`))}t.statusCode=200,t.setHeader("Content-Type","text/html"),t.end(r)}var K=ue;function he(t,e,i){try{let s=t.map(n=>{var o;let c={pageName:n.name,filePath:n.file,relativePath:S.relative(process.cwd(),n.file),strategy:void 0,isMatched:!1},g=T(e.pageConfigs,c,i),l="default";if(g!=null&&g.strategy)l=g.strategy;else if((o=e.appliedStrategies)!=null&&o.has(n.name)){let a=e.appliedStrategies.get(n.name);a&&(l=a)}let r=l!=="default"?`<span class="badge">${l}</span>`:"";return`
|
|
6
6
|
<div class="page-item">
|
|
7
7
|
<a href="${n.name}.html" class="page-link">
|
|
8
8
|
${n.name}${r}
|
|
@@ -83,11 +83,11 @@ ${f}
|
|
|
83
83
|
\u627E\u5230 ${t.length} \u4E2A\u9875\u9762
|
|
84
84
|
</div>
|
|
85
85
|
<div class="page-list">
|
|
86
|
-
${
|
|
86
|
+
${s}
|
|
87
87
|
</div>
|
|
88
88
|
</body>
|
|
89
89
|
</html>
|
|
90
|
-
`}catch(
|
|
90
|
+
`}catch(s){return i(`\u751F\u6210\u7D22\u5F15\u9875\u5931\u8D25: ${s}`),`
|
|
91
91
|
<!DOCTYPE html>
|
|
92
92
|
<html>
|
|
93
93
|
<head>
|
|
@@ -95,10 +95,13 @@ ${f}
|
|
|
95
95
|
</head>
|
|
96
96
|
<body>
|
|
97
97
|
<h1>\u751F\u6210\u7D22\u5F15\u9875\u65F6\u53D1\u751F\u9519\u8BEF</h1>
|
|
98
|
-
<p>${
|
|
98
|
+
<p>${s}</p>
|
|
99
99
|
</body>
|
|
100
100
|
</html>
|
|
101
|
-
`}}var
|
|
101
|
+
`}}var X=require("vite"),G=require("glob"),C=P(require("path")),$=P(require("fs"));function k(t){var a;let{entry:e="src/pages/*/main.{ts,js}",exclude:i=[],template:s="index.html",placeholder:n="<!--VITE_MULTI_PAGE_ENTRY-->",strategies:c={},pageConfigs:g={},forceBuildStrategy:l}=t,r=U(!0),o={};try{let p=G.glob.sync(e,{cwd:process.cwd()}),f=j(p,e,i,r);if(f.length===0)return r("\u8B66\u544A: \u672A\u627E\u5230\u5339\u914D\u7684\u5165\u53E3\u6587\u4EF6"),{};let m=new Map,u=new Map;for(let d of f){let h={pageName:d.name,filePath:d.file,relativePath:C.relative(process.cwd(),d.file)},b=T(g,h,r),w=(b==null?void 0:b.strategy)||"default";m.set(d.name,w),u.has(w)||u.set(w,[]),(a=u.get(w))==null||a.push(d.name)}if(r(`\u{1F4C4} \u53D1\u73B0 ${f.length} \u4E2A\u9875\u9762: ${f.map(d=>d.name).join(", ")}`),l){let d=u.get(l)||[];if(d.length===0)return r(`\u8B66\u544A: \u7B56\u7565 "${l}" \u4E0B\u6CA1\u6709\u9875\u9762`),{};r(`\u5F3A\u5236\u6784\u5EFA\u7B56\u7565: ${l}, \u9875\u9762: ${d.join(", ")}`);let h=W(l,d,f,c[l],g,s,n,r);return o[l]=h,o}for(let[d,h]of u){if(h.length===0)continue;let b=c[d]||{},w=W(d,h,f,b,g,s,n,r);o[d]=w}if(Object.keys(o).length===0){r("\u8B66\u544A: \u672A\u751F\u6210\u4EFB\u4F55\u6784\u5EFA\u914D\u7F6E\uFF0C\u521B\u5EFA\u9ED8\u8BA4\u914D\u7F6E");let d=f.map(b=>b.name),h=W("default",d,f,{},g,s,n,r);o.default=h}let v=Object.keys(o);return r(`\u{1F4E6} \u6784\u5EFA\u7B56\u7565: ${v.join(", ")}`),o}catch(p){throw r("\u751F\u6210\u6784\u5EFA\u914D\u7F6E\u5931\u8D25:",p),p}}function W(t,e,i,s,n,c,g,l){let r={},o=[],a={};for(let m of e){let u=i.find(B=>B.name===m);if(!u)continue;let v={pageName:m,filePath:u.file,relativePath:C.relative(process.cwd(),u.file),strategy:t},d=T(n,v,l);d!=null&&d.define&&Object.assign(a,d.define);let h=c,b=`${m}.html`;$.existsSync(C.resolve(process.cwd(),b))?h=b:d!=null&&d.template&&(h=d.template);let w=C.resolve(process.cwd(),h);if(!$.existsSync(w)){l(`\u8B66\u544A: \u6A21\u677F\u6587\u4EF6\u4E0D\u5B58\u5728: ${h}`);continue}let N=$.readFileSync(w,"utf-8");if(N.includes(g)){let B=`./${u.file}`;N=N.replace(new RegExp(g.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),B)}let V=C.resolve(process.cwd(),`.temp.mp.${m}.html`);$.writeFileSync(V,N),o.push(V),r[m]=V}let p={build:{rollupOptions:{input:r,output:{entryFileNames:"assets/[name]-[hash].js",chunkFileNames:"assets/[name]-[hash].js",assetFileNames:"assets/[name]-[hash][extname]"}},emptyOutDir:!1},define:{}},f=p;return s&&(f=(0,X.mergeConfig)(p,s)),Object.keys(a).length>0&&(f.define={...f.define,...a}),f.build||(f.build={}),f.build.rollupOptions||(f.build.rollupOptions={}),f.build.rollupOptions.input=r,f.build.emptyOutDir=!1,l(`\u7B56\u7565 "${t}" - ${e.length} \u4E2A\u9875\u9762`),f}function H(t=[]){let e=t.findIndex(s=>s==="--outDir");if(e!==-1&&e+1<t.length){let s=t[e+1];return C.resolve(process.cwd(),s)}let i=t.find(s=>s.startsWith("--outDir="));if(i){let s=i.split("=")[1];return C.resolve(process.cwd(),s)}return C.resolve(process.cwd(),"dist")}function Z(t=[]){let e=H(t),i=U(!0);try{$.existsSync(e)&&($.rmSync(e,{recursive:!0,force:!0}),i(`\u{1F9F9} \u6E05\u7406\u8F93\u51FA\u76EE\u5F55: ${C.relative(process.cwd(),e)}`))}catch(s){i(`\u26A0\uFE0F \u6E05\u7406\u8F93\u51FA\u76EE\u5F55\u5931\u8D25: ${e}`,s)}}function ee(t){let{entry:e="src/pages/*/main.{ts,js}",exclude:i=[],pageConfigs:s={}}=t,n=U(!1),c=new Set,g=G.glob.sync(e,{cwd:process.cwd()}),l=j(g,e,i,n);if(l.length===0)throw new Error(`\u672A\u627E\u5230\u5339\u914D\u7684\u5165\u53E3\u6587\u4EF6: ${e}`);try{for(let r of l){let o={pageName:r.name,filePath:r.file,relativePath:C.relative(process.cwd(),r.file)},a=T(s,o,n),p=(a==null?void 0:a.strategy)||"default";c.add(p)}return Array.from(c).sort()}catch(r){return n("\u83B7\u53D6\u53EF\u7528\u7B56\u7565\u5931\u8D25:",r),["default"]}}var M=P(require("fs")),_=P(require("path")),te=require("url"),R=require("module"),ne=["multipage.config.js","multipage.config.mjs","multipage.config.ts"];function Y(){for(let t of ne){let e=_.resolve(process.cwd(),t);if(M.existsSync(e))return!0}return!1}async function z(t){let e=await Ce();if(e){let i=e(t);return i||{}}return null}async function xe(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(`
|
|
102
|
+
\u274C \u65E0\u6CD5\u52A0\u8F7D TypeScript \u914D\u7F6E\u6587\u4EF6\uFF0C\u56E0\u4E3A\u627E\u4E0D\u5230 esbuild \u4F9D\u8D56\u3002`),console.error(`
|
|
103
|
+
\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
|
|
104
|
+
`),new Error(`\u9700\u8981 esbuild \u4F9D\u8D56\u6765\u5904\u7406 TypeScript \u914D\u7F6E\u6587\u4EF6: ${_.basename(t)}`)}let s=await i.transform(e,{loader:"ts",format:"cjs",target:"node16",sourcemap:!1}),n=new R.Module(t);return n.filename=t,n.paths=R.Module._nodeModulePaths(_.dirname(t)),n._compile(s.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 s=(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 R.Module(t);return n.filename=t,n.paths=R.Module._nodeModulePaths(_.dirname(t)),n._compile(s,t),n.exports}if(t.endsWith(".js")||t.endsWith(".mjs"))return import(`${(0,te.pathToFileURL)(t).href}?t=${Date.now()}`);throw new Error(`\u4E0D\u652F\u6301\u7684\u914D\u7F6E\u6587\u4EF6\u7C7B\u578B: ${t}`)}async function Ce(){let t=process.cwd();for(let e of ne){let i=_.resolve(t,e);if(M.existsSync(i))try{let s=await xe(i),n=s.default||s;if(typeof n=="function")return n;console.warn(`\u914D\u7F6E\u6587\u4EF6 ${e} \u5FC5\u987B\u9ED8\u8BA4\u5BFC\u51FA\u4E00\u4E2A\u51FD\u6570`)}catch(s){e.endsWith(".ts")?(console.error(`\u52A0\u8F7DTypeScript\u914D\u7F6E\u6587\u4EF6 ${e} \u5931\u8D25:`,s),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:`,s)}}return null}var E={entry:"src/pages/**/*.{ts,js}",exclude:[],template:"index.html",placeholder:"{{ENTRY_FILE}}",debug:!1,merge:"all",strategies:{default:{}},pageConfigs:{}};function D(t){return t?{entry:t.entry??E.entry,exclude:t.exclude??E.exclude,template:t.template??E.template,placeholder:t.placeholder??E.placeholder,debug:t.debug??E.debug,merge:t.merge??E.merge,strategies:t.strategies??E.strategies,pageConfigs:t.pageConfigs??E.pageConfigs,__forceBuildStrategy:t.__forceBuildStrategy}:{...E}}function re(t){return typeof t=="function"?t:()=>t}function se(t){return t}function oe(t,e,i,s){let n=x.resolve(t,"assets");if(!y.existsSync(n)){s("assets\u76EE\u5F55\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u91CD\u7EC4");return}let c=y.readdirSync(t).filter(r=>r.endsWith(".html")).map(r=>x.resolve(t,r));if(c.length===0){s("\u672A\u627E\u5230HTML\u6587\u4EF6\uFF0C\u8DF3\u8FC7\u91CD\u7EC4");return}let g=new Map,l=new Map;if(c.forEach(r=>{var d;let o=x.basename(r,".html");o.startsWith(".temp.mp.")&&(o=o.replace(".temp.mp.",""));let a=y.readFileSync(r,"utf-8"),p=[],f=/(?:src|href)="\/assets\/([^"]+)"/g,m;for(;(m=f.exec(a))!==null;){let h=m[1];p.push(h),l.has(h)||l.set(h,[]),(d=l.get(h))==null||d.push(o)}let u="";e==="strategy"?u="default":e==="page"&&(u=o);let v=x.resolve(t,u);g.set(o,{assets:p,targetDir:v}),s(`\u9875\u9762 ${o} \u4F9D\u8D56\u8D44\u6E90:`,p)}),l.forEach((r,o)=>{r.length>1?s(`\u5171\u4EAB\u8D44\u6E90 ${o} \u88AB\u9875\u9762\u4F7F\u7528:`,r):s(`\u72EC\u5360\u8D44\u6E90 ${o} \u4EC5\u88AB\u9875\u9762 ${r[0]} \u4F7F\u7528`)}),g.forEach(({assets:r,targetDir:o},a)=>{let p=x.resolve(o,"assets");y.existsSync(p)||y.mkdirSync(p,{recursive:!0}),r.forEach(f=>{let m=x.resolve(n,f),u=x.resolve(p,f);y.existsSync(m)?(y.copyFileSync(m,u),s(`\u590D\u5236\u8D44\u6E90\u6587\u4EF6\u5230 ${a}: assets/${f} -> ${x.relative(t,u)}`)):s(`\u8B66\u544A: \u8D44\u6E90\u6587\u4EF6\u4E0D\u5B58\u5728: ${m}`)})}),g.forEach(({targetDir:r},o)=>{let a=x.resolve(t,`${o}.html`),p=o;if(y.existsSync(a)||(a=x.resolve(t,`.temp.mp.${o}.html`),y.existsSync(a)&&(p=o)),y.existsSync(a)){let f=y.readFileSync(a,"utf-8");f=f.replace(/(?:src|href)="\/assets\//g,v=>v.replace("/assets/","./assets/"));let m;e==="strategy"?m=x.resolve(r,`${p}.html`):e==="page"?m=x.resolve(r,"index.html"):m=a,y.writeFileSync(m,f),m!==a&&y.unlinkSync(a);let u=x.relative(t,m);s(`\u6309${e}\u5206\u7EC4\u79FB\u52A8HTML\u6587\u4EF6: ${p}.html -> ${u}`)}else s(`\u8B66\u544A: \u672A\u627E\u5230HTML\u6587\u4EF6: ${o}.html \u6216 .temp.mp.${o}.html`)}),y.existsSync(n))if(e==="strategy"||e==="page")try{y.rmSync(n,{recursive:!0,force:!0}),s("\u5F3A\u5236\u6E05\u7406\u6574\u4E2A\u6839\u76EE\u5F55assets\u76EE\u5F55 (strategy/page\u6A21\u5F0F)")}catch(r){s("\u6E05\u7406\u6839\u76EE\u5F55assets\u5931\u8D25:",r)}else{l.forEach((o,a)=>{let p=x.resolve(n,a);y.existsSync(p)&&(y.unlinkSync(p),s(`\u6E05\u7406\u539F\u59CB\u8D44\u6E90\u6587\u4EF6: assets/${a}`))});let r=y.readdirSync(n);r.length===0?(y.rmdirSync(n),s("\u6E05\u7406\u7A7A\u7684assets\u76EE\u5F55")):s("assets\u76EE\u5F55\u4E2D\u8FD8\u6709\u672A\u5904\u7406\u7684\u6587\u4EF6:",r)}}function ae(t){let e,i=[],s=()=>{};return{name:"vite-multi-page",async configResolved(n){let c=null;Y()&&(c=await z({mode:n.command==="serve"?"development":"production",command:n.command,isCLI:!1}));let g=D(c);e=t?t(g,{mode:n.command==="serve"?"development":"production",command:n.command,isCLI:!1}):g,s=e.debug??!1?console.log.bind(console,"[vite-multi-page]"):()=>{},s("Vite\u914D\u7F6E\u5DF2\u89E3\u6790, \u4F7F\u7528\u914D\u7F6E:",{strategies:Object.keys(e.strategies||{}),entry:e.entry})},async config(n,{command:c}){var g;if(c==="serve"){let l=process.argv,r=l.find(o=>o.startsWith("--strategy="));if(r){let o=r.split("=")[1];o&&(process.env.VITE_MULTI_PAGE_STRATEGY=o)}else{let o=l.findIndex(a=>a==="--strategy");if(o!==-1&&o+1<l.length){let a=l[o+1];process.env.VITE_MULTI_PAGE_STRATEGY=a}}process.env.VITE_MULTI_PAGE_STRATEGY||(process.env.VITE_MULTI_PAGE_STRATEGY="default")}if(c==="build"){if(!e){let a=null;Y()&&(a=await z({mode:"production",command:"build",isCLI:!1}));let p=D(a);e=t?t(p,{mode:"production",command:"build",isCLI:!1}):p,s=e.debug??!1?console.log.bind(console,"[vite-multi-page]"):()=>{}}s("\u914D\u7F6E\u6784\u5EFA\u6A21\u5F0F");let l=process.env.VITE_MULTI_PAGE_STRATEGY,r=k({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:l}),o=Object.keys(r)[0];if(o&&r[o]){s(`\u5E94\u7528\u6784\u5EFA\u7B56\u7565: ${o}`);let a=r[o],p=(0,ie.mergeConfig)(n,a);Object.assign(n,p),s(`\u5DF2\u5E94\u7528\u7B56\u7565 "${o}" \u7684\u914D\u7F6E:`,{build:!!a.build,define:!!a.define,plugins:((g=a.plugins)==null?void 0:g.length)||0})}else throw s("\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
|
|
102
105
|
|
|
103
106
|
\u53EF\u80FD\u7684\u539F\u56E0\uFF1A
|
|
104
107
|
1. \u914D\u7F6E\u6587\u4EF6\u8FD4\u56DE\u7A7A\u5BF9\u8C61 {}
|
|
@@ -113,5 +116,5 @@ export default () => ({
|
|
|
113
116
|
strategies: {
|
|
114
117
|
default: {}
|
|
115
118
|
}
|
|
116
|
-
});`)}},configureServer(n){if(n.config.command==="serve"){
|
|
119
|
+
});`)}},configureServer(n){if(n.config.command==="serve"){s("\u914D\u7F6E\u5F00\u53D1\u670D\u52A1\u5668");let c=process.env.VITE_MULTI_PAGE_STRATEGY||"default";s(`\u5F00\u53D1\u6A21\u5F0F\u7B56\u7565: ${c}`),K(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:c},s)}},writeBundle(n){if(!(e!=null&&e.merge)||e.merge==="all")return;let c=n.dir||"dist",g=e.merge;s(`\u5E94\u7528\u6784\u5EFA\u4EA7\u7269\u5408\u5E76\u6A21\u5F0F: ${g}`);try{oe(c,g,e,s)}catch(l){throw s("\u8D44\u6E90\u91CD\u7EC4\u5931\u8D25:",l),l}},buildEnd(){i.length>0&&(s(`\u6E05\u7406 ${i.length} \u4E2A\u4E34\u65F6\u6587\u4EF6`),i.forEach(n=>{try{y.existsSync(n)&&(y.unlinkSync(n),s(`\u5220\u9664\u4E34\u65F6\u6587\u4EF6: ${n}`))}catch(c){s(`\u5220\u9664\u4E34\u65F6\u6587\u4EF6\u5931\u8D25: ${n}`,c)}}),i.length=0)}}}function ve(t,e,i,s){return oe(t,e,i,s)}var be=ae;0&&(module.exports={cleanViteOutputDirectory,defineConfig,defineConfigTransform,generateBuildConfig,getAvailableStrategies,getViteOutputDirectory,mergeWithDefaults,reorganizeAssetsInCLI,viteMultiPage});
|
|
117
120
|
//# sourceMappingURL=index.js.map
|