fix: excerpt_type: html preview by browserTemplateCompilation, close #582

This commit is contained in:
YunYouJun 2025-07-16 22:31:40 +08:00
parent b30e79b827
commit e6f83c1035
7 changed files with 88 additions and 44 deletions

View File

@ -74,3 +74,7 @@ if (options.config.siteConfig.encrypt.enable) {
)
}
```
After `v0.25.6`, use `options.config.vue.browserTemplateCompilation = true` to disable runtime compile vue.
- `excerpt_type: html` also need this option to work properly.

View File

@ -55,6 +55,9 @@ export const defaultValaxyConfig: ValaxyNodeConfig = {
// cssCodeSplit: false,
},
},
vue: {
browserTemplateCompilation: true,
},
devtools: true,
}

View File

@ -181,9 +181,7 @@ export async function getAlias(options: ResolvedValaxyOptions): Promise<AliasOpt
{ find: `valaxy-theme-${options.theme}`, replacement: `${toAtFS(resolve(options.themeRoot))}/client/index.ts` },
]
// for runtime compile vue, encrypt and decrypt
// type cast
if (options.config.siteConfig.encrypt.enable) {
if (options.config.vue?.browserTemplateCompilation) {
alias.push(
{ find: /^vue$/, replacement: await resolveImportPath('vue/dist/vue.esm-bundler.js', true) },
)

View File

@ -136,7 +136,24 @@ export interface ValaxyExtendConfig {
* @see https://github.com/vitejs/vite-plugin-vue/blob/main/packages/plugin-vue/README.md
*/
vue?: Parameters<typeof Vue>[0] & {
/**
* @valaxy
*/
isCustomElement?: ((tag: string) => boolean)[]
/**
* @valaxy
* @see https://cn.vuejs.org/guide/scaling-up/tooling#note-on-in-browser-template-compilation
* enable
*
* for runtime compile vue, encrypt and decrypt
* for excerpt_type: html (runtime render)
*
* @default true
*
* browserTemplateCompilation
* @description
*/
browserTemplateCompilation?: boolean
}
/**
* @see https://github.com/unplugin/unplugin-vue-components

View File

@ -110,7 +110,7 @@
"markdown-it-table-of-contents": "^0.9.0",
"markdown-it-task-lists": "^2.1.1",
"medium-zoom": "^1.1.0",
"mermaid": "^11.8.1",
"mermaid": "^11.9.0",
"mlly": "^1.7.4",
"nprogress": "^0.2.0",
"open": "10.1.0",

View File

@ -49,8 +49,8 @@ catalogs:
specifier: ^0.14.0
version: 0.14.0
vue-i18n:
specifier: ^11.1.9
version: 11.1.9
specifier: ^11.1.10
version: 11.1.10
zx:
specifier: ^8.7.1
version: 8.7.1
@ -250,7 +250,7 @@ importers:
version: link:../../packages/valaxy-addon-algolia
valaxy-addon-artalk:
specifier: ^0.1.2
version: 0.1.2(marked@15.0.12)(typescript@5.8.3)(valaxy@packages+valaxy)
version: 0.1.2(marked@16.0.0)(typescript@5.8.3)(valaxy@packages+valaxy)
valaxy-addon-bangumi:
specifier: workspace:*
version: link:../../packages/valaxy-addon-bangumi
@ -373,7 +373,7 @@ importers:
version: 1.2.5
'@intlify/unplugin-vue-i18n':
specifier: ^6.0.8
version: 6.0.8(@vue/compiler-dom@3.5.17)(eslint@9.31.0(jiti@2.4.2))(rollup@4.45.0)(typescript@5.8.3)(vue-i18n@11.1.9(vue@3.5.17(typescript@5.8.3)))(vue@3.5.17(typescript@5.8.3))
version: 6.0.8(@vue/compiler-dom@3.5.17)(eslint@9.31.0(jiti@2.4.2))(rollup@4.45.0)(typescript@5.8.3)(vue-i18n@11.1.10(vue@3.5.17(typescript@5.8.3)))(vue@3.5.17(typescript@5.8.3))
'@primevue/themes':
specifier: catalog:frontend
version: 4.3.6
@ -409,7 +409,7 @@ importers:
version: 7.0.4(@types/node@24.0.14)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)
vue-i18n:
specifier: catalog:build
version: 11.1.9(vue@3.5.17(typescript@5.8.3))
version: 11.1.10(vue@3.5.17(typescript@5.8.3))
packages/valaxy:
dependencies:
@ -427,7 +427,7 @@ importers:
version: 1.2.5
'@intlify/unplugin-vue-i18n':
specifier: ^6.0.8
version: 6.0.8(@vue/compiler-dom@3.5.17)(eslint@9.31.0(jiti@2.4.2))(rollup@4.45.0)(typescript@5.8.3)(vue-i18n@11.1.9(vue@3.5.17(typescript@5.8.3)))(vue@3.5.17(typescript@5.8.3))
version: 6.0.8(@vue/compiler-dom@3.5.17)(eslint@9.31.0(jiti@2.4.2))(rollup@4.45.0)(typescript@5.8.3)(vue-i18n@11.1.10(vue@3.5.17(typescript@5.8.3)))(vue@3.5.17(typescript@5.8.3))
'@shikijs/transformers':
specifier: ^3.8.0
version: 3.8.0
@ -561,8 +561,8 @@ importers:
specifier: ^1.1.0
version: 1.1.0
mermaid:
specifier: ^11.8.1
version: 11.8.1
specifier: ^11.9.0
version: 11.9.0
mlly:
specifier: ^1.7.4
version: 1.7.4
@ -646,7 +646,7 @@ importers:
version: 3.5.17(typescript@5.8.3)
vue-i18n:
specifier: catalog:build
version: 11.1.9(vue@3.5.17(typescript@5.8.3))
version: 11.1.10(vue@3.5.17(typescript@5.8.3))
vue-router:
specifier: ^4.5.1
version: 4.5.1(vue@3.5.17(typescript@5.8.3))
@ -1601,14 +1601,18 @@ packages:
resolution: {integrity: sha512-mE71aUH5baH0me8duB4FY5qevUJizypHsYw3eCvmOx07QvmKppgOONx3dYINxuA89Z2qkAGb/K6Nrpi7aAMwew==}
engines: {node: '>= 16'}
'@intlify/core-base@11.1.9':
resolution: {integrity: sha512-Lrdi4wp3XnGhWmB/mMD/XtfGUw1Jt+PGpZI/M63X1ZqhTDjNHRVCs/i8vv8U1cwaj1A9fb0bkCQHLSL0SK+pIQ==}
'@intlify/core-base@11.1.10':
resolution: {integrity: sha512-JhRb40hD93Vk0BgMgDc/xMIFtdXPHoytzeK6VafBNOj6bb6oUZrGamXkBKecMsmGvDQQaPRGG2zpa25VCw8pyw==}
engines: {node: '>= 16'}
'@intlify/message-compiler@10.0.7':
resolution: {integrity: sha512-nrC4cDL/UHZSUqd8sRbVz+DPukzZ8NnG5OK+EB/nlxsH35deyzyVkXP/QuR8mFZrISJ+4hCd6VtCQCcT+RO+5g==}
engines: {node: '>= 16'}
'@intlify/message-compiler@11.1.10':
resolution: {integrity: sha512-TABl3c8tSLWbcD+jkQTyBhrnW251dzqW39MPgEUCsd69Ua3ceoimsbIzvkcPzzZvt1QDxNkenMht+5//V3JvLQ==}
engines: {node: '>= 16'}
'@intlify/message-compiler@11.1.9':
resolution: {integrity: sha512-84SNs3Ikjg0rD1bOuchzb3iK1vR2/8nxrkyccIl5DjFTeMzE/Fxv6X+A7RN5ZXjEWelc1p5D4kHA6HEOhlKL5Q==}
engines: {node: '>= 16'}
@ -1617,6 +1621,10 @@ packages:
resolution: {integrity: sha512-oeoq0L5+5P4ShXa6jBQcx+BT+USe3MjX0xJexZO1y7rfDJdwZ9+QP3jO4tcS1nxhBYYdjvFTqe4bmnLijV0GxQ==}
engines: {node: '>= 16'}
'@intlify/shared@11.1.10':
resolution: {integrity: sha512-6ZW/f3Zzjxfa1Wh0tYQI5pLKUtU+SY7l70pEG+0yd0zjcsYcK0EBt6Fz30Dy0tZhEqemziQQy2aNU3GJzyrMUA==}
engines: {node: '>= 16'}
'@intlify/shared@11.1.9':
resolution: {integrity: sha512-H/83xgU1l8ox+qG305p6ucmoy93qyjIPnvxGWRA7YdOoHe1tIiW9IlEu4lTdsOR7cfP1ecrwyflQSqXdXBacXA==}
engines: {node: '>= 16'}
@ -1713,8 +1721,8 @@ packages:
'@mdit-vue/types@2.1.4':
resolution: {integrity: sha512-QiGNZslz+zXUs2X8D11UQhB4KAMZ0DZghvYxa7+1B+VMLcDtz//XHpWbcuexjzE3kBXSxIUTPH3eSQCa0puZHA==}
'@mermaid-js/parser@0.6.1':
resolution: {integrity: sha512-lCQNpV8R4lgsGcjX5667UiuDLk2micCtjtxR1YKbBXvN5w2v+FeLYoHrTSSrjwXdMcDYvE4ZBPvKT31dfeSmmA==}
'@mermaid-js/parser@0.6.2':
resolution: {integrity: sha512-+PO02uGF6L6Cs0Bw8RpGhikVvMWEysfAyl27qTlroUB8jSWr1lL0Sf6zi78ZxlSnmgSY2AMMKVgghnN9jTtwkQ==}
'@microsoft/api-extractor-model@7.30.6':
resolution: {integrity: sha512-znmFn69wf/AIrwHya3fxX6uB5etSIn6vg4Q4RB/tb5VDDs1rqREc+AvMC/p19MUN13CZ7+V/8pkYPTj7q8tftg==}
@ -5269,6 +5277,11 @@ packages:
engines: {node: '>= 18'}
hasBin: true
marked@16.0.0:
resolution: {integrity: sha512-MUKMXDjsD/eptB7GPzxo4xcnLS6oo7/RHimUMHEDRhUooPwmN9BEpMl7AEOJv3bmso169wHI2wUF9VQgL7zfmA==}
engines: {node: '>= 20'}
hasBin: true
math-intrinsics@1.1.0:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
@ -5359,8 +5372,8 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
mermaid@11.8.1:
resolution: {integrity: sha512-VSXJLqP1Sqw5sGr273mhvpPRhXwE6NlmMSqBZQw+yZJoAJkOIPPn/uT3teeCBx60Fkt5zEI3FrH2eVT0jXRDzw==}
mermaid@11.9.0:
resolution: {integrity: sha512-YdPXn9slEwO0omQfQIsW6vS84weVQftIyyTGAZCwM//MGhPzL1+l6vO6bkf0wnP4tHigH1alZ5Ooy3HXI2gOag==}
methods@1.1.2:
resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
@ -7460,8 +7473,8 @@ packages:
peerDependencies:
vue: ^3.0.0
vue-i18n@11.1.9:
resolution: {integrity: sha512-N9ZTsXdRmX38AwS9F6Rh93RtPkvZTkSy/zNv63FTIwZCUbLwwrpqlKz9YQuzFLdlvRdZTnWAUE5jMxr8exdl7g==}
vue-i18n@11.1.10:
resolution: {integrity: sha512-C+IwnSg8QDSOAox0gdFYP5tsKLx5jNWxiawNoiNB/Tw4CReXmM1VJMXbduhbrEzAFLhreqzfDocuSVjGbxQrag==}
engines: {node: '>= 16'}
peerDependencies:
vue: ^3.0.0
@ -8481,7 +8494,7 @@ snapshots:
dependencies:
'@swc/helpers': 0.5.17
'@intlify/bundle-utils@10.0.1(vue-i18n@11.1.9(vue@3.5.17(typescript@5.8.3)))':
'@intlify/bundle-utils@10.0.1(vue-i18n@11.1.10(vue@3.5.17(typescript@5.8.3)))':
dependencies:
'@intlify/message-compiler': 11.1.9
'@intlify/shared': 11.1.9
@ -8493,23 +8506,28 @@ snapshots:
source-map-js: 1.2.1
yaml-eslint-parser: 1.3.0
optionalDependencies:
vue-i18n: 11.1.9(vue@3.5.17(typescript@5.8.3))
vue-i18n: 11.1.10(vue@3.5.17(typescript@5.8.3))
'@intlify/core-base@10.0.7':
dependencies:
'@intlify/message-compiler': 10.0.7
'@intlify/shared': 10.0.7
'@intlify/core-base@11.1.9':
'@intlify/core-base@11.1.10':
dependencies:
'@intlify/message-compiler': 11.1.9
'@intlify/shared': 11.1.9
'@intlify/message-compiler': 11.1.10
'@intlify/shared': 11.1.10
'@intlify/message-compiler@10.0.7':
dependencies:
'@intlify/shared': 10.0.7
source-map-js: 1.2.1
'@intlify/message-compiler@11.1.10':
dependencies:
'@intlify/shared': 11.1.10
source-map-js: 1.2.1
'@intlify/message-compiler@11.1.9':
dependencies:
'@intlify/shared': 11.1.9
@ -8517,14 +8535,16 @@ snapshots:
'@intlify/shared@10.0.7': {}
'@intlify/shared@11.1.10': {}
'@intlify/shared@11.1.9': {}
'@intlify/unplugin-vue-i18n@6.0.8(@vue/compiler-dom@3.5.17)(eslint@9.31.0(jiti@2.4.2))(rollup@4.45.0)(typescript@5.8.3)(vue-i18n@11.1.9(vue@3.5.17(typescript@5.8.3)))(vue@3.5.17(typescript@5.8.3))':
'@intlify/unplugin-vue-i18n@6.0.8(@vue/compiler-dom@3.5.17)(eslint@9.31.0(jiti@2.4.2))(rollup@4.45.0)(typescript@5.8.3)(vue-i18n@11.1.10(vue@3.5.17(typescript@5.8.3)))(vue@3.5.17(typescript@5.8.3))':
dependencies:
'@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0(jiti@2.4.2))
'@intlify/bundle-utils': 10.0.1(vue-i18n@11.1.9(vue@3.5.17(typescript@5.8.3)))
'@intlify/bundle-utils': 10.0.1(vue-i18n@11.1.10(vue@3.5.17(typescript@5.8.3)))
'@intlify/shared': 11.1.9
'@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.9)(@vue/compiler-dom@3.5.17)(vue-i18n@11.1.9(vue@3.5.17(typescript@5.8.3)))(vue@3.5.17(typescript@5.8.3))
'@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.9)(@vue/compiler-dom@3.5.17)(vue-i18n@11.1.10(vue@3.5.17(typescript@5.8.3)))(vue@3.5.17(typescript@5.8.3))
'@rollup/pluginutils': 5.2.0(rollup@4.45.0)
'@typescript-eslint/scope-manager': 8.37.0
'@typescript-eslint/typescript-estree': 8.37.0(typescript@5.8.3)
@ -8538,7 +8558,7 @@ snapshots:
unplugin: 1.16.1
vue: 3.5.17(typescript@5.8.3)
optionalDependencies:
vue-i18n: 11.1.9(vue@3.5.17(typescript@5.8.3))
vue-i18n: 11.1.10(vue@3.5.17(typescript@5.8.3))
transitivePeerDependencies:
- '@vue/compiler-dom'
- eslint
@ -8546,14 +8566,14 @@ snapshots:
- supports-color
- typescript
'@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.9)(@vue/compiler-dom@3.5.17)(vue-i18n@11.1.9(vue@3.5.17(typescript@5.8.3)))(vue@3.5.17(typescript@5.8.3))':
'@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.9)(@vue/compiler-dom@3.5.17)(vue-i18n@11.1.10(vue@3.5.17(typescript@5.8.3)))(vue@3.5.17(typescript@5.8.3))':
dependencies:
'@babel/parser': 7.28.0
optionalDependencies:
'@intlify/shared': 11.1.9
'@vue/compiler-dom': 3.5.17
vue: 3.5.17(typescript@5.8.3)
vue-i18n: 11.1.9(vue@3.5.17(typescript@5.8.3))
vue-i18n: 11.1.10(vue@3.5.17(typescript@5.8.3))
'@isaacs/balanced-match@4.0.1': {}
@ -8648,7 +8668,7 @@ snapshots:
'@mdit-vue/types@2.1.4': {}
'@mermaid-js/parser@0.6.1':
'@mermaid-js/parser@0.6.2':
dependencies:
langium: 3.3.1
@ -10217,9 +10237,9 @@ snapshots:
get-intrinsic: 1.3.0
is-array-buffer: 3.0.5
artalk@2.9.1(marked@15.0.12):
artalk@2.9.1(marked@16.0.0):
dependencies:
marked: 15.0.12
marked: 16.0.0
assertion-error@2.0.1: {}
@ -12689,6 +12709,8 @@ snapshots:
marked@15.0.12: {}
marked@16.0.0: {}
math-intrinsics@1.1.0: {}
mathml-tag-names@2.1.3: {}
@ -12848,11 +12870,11 @@ snapshots:
merge2@1.4.1: {}
mermaid@11.8.1:
mermaid@11.9.0:
dependencies:
'@braintree/sanitize-url': 7.1.1
'@iconify/utils': 2.3.0
'@mermaid-js/parser': 0.6.1
'@mermaid-js/parser': 0.6.2
'@types/d3': 7.4.3
cytoscape: 3.32.1
cytoscape-cose-bilkent: 4.1.0(cytoscape@3.32.1)
@ -12865,7 +12887,7 @@ snapshots:
katex: 0.16.22
khroma: 2.1.0
lodash-es: 4.17.21
marked: 15.0.12
marked: 16.0.0
roughjs: 4.6.6
stylis: 4.3.6
ts-dedent: 2.2.0
@ -15059,9 +15081,9 @@ snapshots:
uuid@11.1.0: {}
valaxy-addon-artalk@0.1.2(marked@15.0.12)(typescript@5.8.3)(valaxy@packages+valaxy):
valaxy-addon-artalk@0.1.2(marked@16.0.0)(typescript@5.8.3)(valaxy@packages+valaxy):
dependencies:
artalk: 2.9.1(marked@15.0.12)
artalk: 2.9.1(marked@16.0.0)
valaxy: link:packages/valaxy
vue: 3.5.17(typescript@5.8.3)
vue-i18n: 10.0.7(vue@3.5.17(typescript@5.8.3))
@ -15430,10 +15452,10 @@ snapshots:
'@vue/devtools-api': 6.6.4
vue: 3.5.17(typescript@5.8.3)
vue-i18n@11.1.9(vue@3.5.17(typescript@5.8.3)):
vue-i18n@11.1.10(vue@3.5.17(typescript@5.8.3)):
dependencies:
'@intlify/core-base': 11.1.9
'@intlify/shared': 11.1.9
'@intlify/core-base': 11.1.10
'@intlify/shared': 11.1.10
'@vue/devtools-api': 6.6.4
vue: 3.5.17(typescript@5.8.3)

View File

@ -24,7 +24,7 @@ catalogs:
unhead: ^2.0.12
unplugin-vue-router: ^0.14.0
vite: ^7.0.4
vue-i18n: ^11.1.9
vue-i18n: ^11.1.10
zx: ^8.7.1
frontend:
'@primevue/themes': ^4.3.6