server-stress-default.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import fs from 'node:fs/promises';
  2. import { loremIpsum } from './_util.js';
  3. /**
  4. * @param {URL} projectDir
  5. */
  6. export async function run(projectDir) {
  7. await fs.rm(projectDir, { recursive: true, force: true });
  8. await fs.mkdir(new URL('./src/pages', projectDir), { recursive: true });
  9. await fs.mkdir(new URL('./src/components', projectDir), { recursive: true });
  10. await fs.writeFile(
  11. new URL('./src/pages/index.astro', projectDir),
  12. `\
  13. ---
  14. import Paragraph from '../components/Paragraph.astro'
  15. const content = "${loremIpsum}"
  16. ---
  17. <html lang="en">
  18. <head>
  19. <meta charset="utf-8" />
  20. <meta name="viewport" content="width=device-width" />
  21. <meta name="generator" content={Astro.generator} />
  22. <title>Astro</title>
  23. </head>
  24. <body>
  25. <h1>Astro</h1>
  26. <div>
  27. ${Array.from({ length: 100 })
  28. .map(() => '<p>{content}</p>')
  29. .join('\n')}
  30. </div>
  31. <div>
  32. ${Array.from({ length: 50 })
  33. .map((_, i) => '<Paragraph num={' + i + '} str={content} />')
  34. .join('\n')}
  35. </div>
  36. </body>
  37. </html>`,
  38. 'utf-8'
  39. );
  40. await fs.writeFile(
  41. new URL('./src/components/Paragraph.astro', projectDir),
  42. `<div>{Astro.props.num} {Astro.props.str}</div>`,
  43. 'utf-8'
  44. );
  45. await fs.writeFile(
  46. new URL('./astro.config.js', projectDir),
  47. `\
  48. import { defineConfig } from 'astro/config';
  49. import nodejs from '@astrojs/node';
  50. export default defineConfig({
  51. output: 'server',
  52. adapter: nodejs({ mode: 'standalone' }),
  53. });`,
  54. 'utf-8'
  55. );
  56. }