1 Star 2 Fork 1

林岑影/mmf-blog-vite-vue3-ssr

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
prerender.ts 1.32 KB
一键复制 编辑 原始数据 按行查看 历史
林岑影 提交于 2024-09-14 17:58 +08:00 . chore: eslint format
/* eslint-disable antfu/no-import-dist */
// Pre-render the app into static HTML.
// run `yarn generate` and then `dist/static` can be served as a static site.
import { readdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs'
import { resolve } from 'node:path'
import manifest from './dist/client/.vite/ssr-manifest.json'
import { render } from './dist/server/entry-server.js'
const toAbsolute = (p: string) => resolve(__dirname, p)
const template = readFileSync(toAbsolute('dist/static/index.html'), 'utf-8')
// determine routes to pre-render from src/pages
const routesToPrerender = readdirSync(toAbsolute('src/pages')).map((file) => {
const name = file.replace(/\.vue$/, '').toLowerCase()
return name === 'home' ? '/' : `/${name}`
})
;(async () => {
// pre-render each route...
for (const url of routesToPrerender) {
const { html: appHtml, preloadLinks } = await render(url, manifest)
const html = template.replace('<!--preload-links-->', preloadLinks as string).replace('<!--app-html-->', appHtml as string)
const filePath = `dist/static${url === '/' ? '/index' : url}.html`
writeFileSync(toAbsolute(filePath), html)
console.log('pre-rendered:', filePath)
}
// done, delete ssr manifest
unlinkSync(toAbsolute('dist/client/.vite/ssr-manifest.json'))
})()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/lincenying/mmf-blog-vite-vue3-ssr.git
git@gitee.com:lincenying/mmf-blog-vite-vue3-ssr.git
lincenying
mmf-blog-vite-vue3-ssr
mmf-blog-vite-vue3-ssr
master

搜索帮助