diff options
author | 2023-03-06 22:55:44 +0800 | |
---|---|---|
committer | 2023-03-06 22:55:44 +0800 | |
commit | c5bac09a42d0bf2a3a9b53fed3743291c2109e43 (patch) | |
tree | 0a7b5a90fca6b450cb21f9e111bc4fbcbe26d0ba /benchmark/make-project/render-default.js | |
parent | e0844852d31d0f5680f2710aaa84e3e808aeb88d (diff) | |
download | astro-c5bac09a42d0bf2a3a9b53fed3743291c2109e43.tar.gz astro-c5bac09a42d0bf2a3a9b53fed3743291c2109e43.tar.zst astro-c5bac09a42d0bf2a3a9b53fed3743291c2109e43.zip |
Add page render benchmark (#6415)
Diffstat (limited to 'benchmark/make-project/render-default.js')
-rw-r--r-- | benchmark/make-project/render-default.js | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/benchmark/make-project/render-default.js b/benchmark/make-project/render-default.js new file mode 100644 index 000000000..9dfe88609 --- /dev/null +++ b/benchmark/make-project/render-default.js @@ -0,0 +1,87 @@ +import fs from 'fs/promises'; +import { loremIpsumHtml, loremIpsumMd } from './_util.js'; + +// Map of files to be generated and tested for rendering. +// Ideally each content should be similar for comparison. +export const renderFiles = { + 'astro.astro': `\ +--- +const className = "text-red-500"; +const style = { color: "red" }; +const items = Array.from({ length: 1000 }, (_, i) => i); +--- + +<html> + <head> + <title>My Site</title> + </head> + <body> + <h1 class={className + ' text-lg'}>List</h1> + <ul style={style}> + {items.map((item) => ( + <li class={className}>{item}</li> + ))} + </ul> + ${Array.from({ length: 1000 }) + .map(() => `<p>${loremIpsumHtml}</p>`) + .join('\n')} + </body> +</html>`, + 'md.md': `\ +# List + +${Array.from({ length: 1000 }, (_, i) => i) + .map((v) => `- ${v}`) + .join('\n')} + +${Array.from({ length: 1000 }) + .map(() => loremIpsumMd) + .join('\n\n')} +`, + 'mdx.mdx': `\ +export const className = "text-red-500"; +export const style = { color: "red" }; +export const items = Array.from({ length: 1000 }, (_, i) => i); + +# List + +<ul style={style}> + {items.map((item) => ( + <li class={className}>{item}</li> + ))} +</ul> + +${Array.from({ length: 1000 }) + .map(() => loremIpsumMd) + .join('\n\n')} +`, +}; + +/** + * @param {URL} projectDir + */ +export async function run(projectDir) { + await fs.rm(projectDir, { recursive: true, force: true }); + await fs.mkdir(new URL('./src/pages', projectDir), { recursive: true }); + + await Promise.all( + Object.entries(renderFiles).map(([name, content]) => { + return fs.writeFile(new URL(`./src/pages/${name}`, projectDir), content, 'utf-8'); + }) + ); + + await fs.writeFile( + new URL('./astro.config.js', projectDir), + `\ +import { defineConfig } from 'astro/config'; +import timer from '@astrojs/timer'; +import mdx from '@astrojs/mdx'; + +export default defineConfig({ + integrations: [mdx()], + output: 'server', + adapter: timer(), +});`, + 'utf-8' + ); +} |