# @vavite/multibuild

> Tool for orchestrating multiple Vite builds

Latest version **5.1.0** (published 2024-11-30) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install @vavite/multibuild
pnpm add @vavite/multibuild
yarn add @vavite/multibuild
bun add @vavite/multibuild
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 5.1.0 |
| Published | 2024-11-30 |
| First published | 2022-02-13 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM |
| Dependencies | 3 |
| Unpacked size | 7.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 566 |
| Author | Fatih Aygün |
| Maintainers | cyco130 |

## Links

- npm: https://www.npmjs.com/package/@vavite/multibuild
- Repository: https://github.com/cyco130/vavite
- Homepage: https://github.com/cyco130/vavite#readme
- Issues: https://github.com/cyco130/vavite/issues
- npm.io page: https://npm.io/package/@vavite/multibuild

## Dependencies (3)

- [cac](https://npm.io/package/cac.md) ^6.7.14
- [picocolors](https://npm.io/package/picocolors.md) ^1.1.1
- [@types/node](https://npm.io/package/@types/node.md) ^18.19.67

## Recent versions

- 5.1.0 (latest) — 2024-11-30
- 1.8.1-canary.0 (canary) — 2023-05-23
- 1.6.0-loader.2 (loader) — 2022-12-20
- 1.4.2-next.4 (next) — 2022-08-27
- 1.1.0-beta.1 (beta) — 2022-03-01
- 5.0.1 — 2024-11-02
- 5.0.0 — 2024-09-15
- 4.1.3 — 2024-09-08
- 4.1.2 — 2024-08-11
- 4.1.1 — 2024-02-16
- 4.1.0 — 2024-02-14
- 4.0.3 — 2024-02-10
- 4.0.2 — 2024-01-22
- 4.0.1 — 2024-01-15
- 4.0.0 — 2023-12-31
- … 39 more at https://npm.io/package/@vavite/multibuild/versions

## README

# @vavite/multibuild

`@vavite/multibuild` is a tool for orchestrating multiple [Vite](https://vitejs.dev) builds. This package is the JavaScript API, check out [`@vavite/multibuild-cli`](../multibuild-cli) for the command line interface.

Developing applications that perform server-side rendering (SSR) with Vite requires two separate build steps: one for the client and one for the server. This library allows you to run both builds in a and customize the configuration for each build.

We're hoping that, eventually, [this feature will be implemented in Vite itself](https://github.com/vitejs/vite/issues/5936). This package exists to provide workaround until then.

## Usage

`@vavite/multibuild` extends the Vite configuration with a `buildSteps` property, which is an array of build step definitions. A build step definition is an object with a `name` property (which is simply a string naming the build step), and an optional `config` property which will be merged into the Vite configuration for the build step. For example, a client build followed by a server build can be defined like this:

```ts
import { defineConfig } from "vite";

export default defineConfig({
  buildSteps: [
    {
      name: "client",
      config: {
        build: {
          outDir: "dist/client",
          rollupOptions: {
            // Client entry
            input: "/client",
          },
        },
      },
    },
    {
      name: "server",
      config: {
        build: {
          // Server entry
          ssr: "/server",
          outDir: "dist/server",
        },
      },
    },
  ],
});
```

You can then `import { multibuild } from "@vavite/multibuild"` and use it instead of Vite's `build` function to run a multi-step build.

`@vavite/multibuild` will call `resolveConfig` with the `mode` parameter set to `"multibuild"` to extract the build steps. Setting `buildSteps` in subsequent steps has no effect.

## Sharing information between builds

`@vavite/multibuild` will call the `buildStepStart` hook on each plugin when a build step starts and pass it information about the current step and data forwarded from the previous step. The `buildStepEnd` hook will be called when the build step ends and its return value will be forwarded to the next step. If a promise is returned, it will be awaited first.

If no build steps are defined, `buildStepStart` and `buildStepEnd` will not be called.

---
_Source: https://npm.io/package/@vavite/multibuild · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
