cyco130 / vavite

Develop server-side applications with Vite
473 stars 12 forks source link

Vike / How to set prerender in buildSteps? #115

Closed aheissenberger closed 3 weeks ago

aheissenberger commented 1 month ago

I have set pretender: true in my vikeConfig, but the output does not contain the pre-rendered files.

Here is my current config:

import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import vike from "vike/plugin";
import { vavite } from "vavite";
import { telefunc } from "telefunc/vite";

const APP_ENV = process?.env?.APP_ENV ?? ''

console.log('APP_ENV', APP_ENV)
export default defineConfig({
    define: {
        'process.env.APP_ENV': APP_ENV,
    },
    buildSteps: [
        {
            name: "client",
        },
        {
            name: "server",
            config: {
                build: { ssr: true, target: "node20", },
            },
        },
    ],

    plugins: [
        vavite({
            handlerEntry: APP_ENV === 'AWS_LAMBDA' ? "hono-entry.aws_lambda.ts" : "/hono-entry.vavite.ts",
            serveClientAssetsInDev: true,
            standalone: false, // needed for AWS Lambda to be false

        }),
        react(),
        vike({ disableAutoFullBuild: true, prerender: true }),
        telefunc(),
    ],
});
cyco130 commented 3 weeks ago

Hi!

You can add non-Vite build steps and run Vike's prerender step there:

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import ssr from 'vike/plugin';
import { vavite } from 'vavite';
import { prerender } from 'vike/prerender';

export default defineConfig({
  buildSteps: [
    {
      name: 'client',
    },
    {
      name: 'server',
      config: {
        build: { ssr: true },
      },
    },
    {
      name: 'prerender',
      vite: false,
      async run() {
        await prerender();
      },
    },
  ],

  plugins: [
    vavite({
      handlerEntry: '/server/index.ts',
      serveClientAssetsInDev: true,
    }),
    react(),
    ssr({ disableAutoFullBuild: true, prerender: true }),
  ],
});