PlaycademyPlaycademy

Build

Production builds and deployment preparation

Overview

The Vite plugin prepares your project for deployment when running your build command.

Building Your Project

Run your standard Vite build command:

bun run build
npm run build
pnpm run build
yarn run build

The plugin automatically generates the manifest required for deployment.

Command
$ bun run build
Output
[Playcademy]playcademy.manifest.json                  0.25 kB

If auto-zip is enabled:

Command
$ bun run build
Output
[Playcademy]playcademy.manifest.json                  0.25 kB.playcademy/my-project.zip                1,234.56 kB

Build Output

Typical structure:

index.html
index-abc123.js
index-def456.css
logo-789xyz.png
playcademy.manifest.json

The Manifest

The plugin generates playcademy.manifest.json in your build output:

{
    "version": "1",
    "platform": "web",
    "createdAt": "2025-10-09T08:30:00.000Z"
}

Build Metadata

The manifest provides build metadata. Vite builds are always platform web.

Project metadata (name, emoji, backend routes) is handled by the CLI during deployment.

Manifest Fields

FieldValueDescription
version"1"Manifest schema version
platform"web"Always web for Vite
createdAt(timestamp)Build timestamp

Auto-Zip

By default, the plugin creates a deployment archive at .playcademy/<project-name>.zip with all build output.

To disable automatic zip creation:

vite.config.ts
playcademy({
    export: {
        autoZip: false,
    },
})

Deployment Workflow

The typical workflow:

bun run buildplaycademy deploy
npm run buildplaycademy deploy
pnpm run buildplaycademy deploy
yarn run buildplaycademy deploy

Build First

The CLI doesn't automatically build your project. Always run your build command before deploying.

What happens during deployment?

The CLI reads your built dist/ directory and:

  1. Deploys your project to Playcademy
  2. Bundles and deploys any backend integrations (if needed)
  3. Updates project metadata from playcademy.config.js

See Deployment Guide for details.

What's Next?

On this page