Runable v1.0.0-alpha.20
Why Runable? Docs Modules Work with AI Blog About Changelog
  • 01Why Runable?
  • 02Docs
  • 03Modules
  • 04Work with AI
  • 05Blog
  • 06About
  • 07Changelog
Vue without a fixed server runtime.
Getting Started Structure Integrations Guide MCP API
  • Getting Started Structure Integrations Guide MCP API
Build the Interface
  • Routing
  • Layouts
  • Middlewares
  • Error Handling
Load and Render
  • Data Fetching
  • SSR and CSR
  • Head and SEO
Extend Runable
  • Auto-imports
  • Plugins
  • Modules
Configure and Ship
  • Runtime Configuration
  • CSS and Assets
  • Production Build
CLI
  • Overview
  • Create
  • Prepare
  • Build
  • MCP
  • AI Skills
  • Inspector

CSS and assets

Load global styles and serve the application's static files.

Runable distinguishes files transformed by Vite from files served as-is.

Load global styles

Declare them in runable.config.ts:

export default defineConfig({
  css: [
    "app/css/reset.css",
    "app/css/main.css",
  ],
});

Runable combines project and module styles, removes duplicates, and imports them into the client entry. Vite processes imports, URLs, and installed preprocessors.

You can also scan a directory:

export default defineConfig({
  css: [{ dirs: "app/css" }],
});

Keep styles local

Component-specific styles remain in the Vue file:

<style scoped>
.card {
  border: 1px solid #ddd;
}
</style>

Add only globally loaded stylesheets to css.

Serve a public file

Put untransformed files in public/:

public/
├── favicon.svg
└── images/logo.png

Reference them from the root:

<img src="/images/logo.png" alt="Acme" />

To import an asset and let Vite version it, keep it in source code:

<script setup lang="ts">
import logoUrl from "../assets/logo.svg";
</script>

<template><img :src="logoUrl" alt="Acme" /></template>

Change the public directory

export default defineConfig({
  publicDir: "static",
});

Use publicDir: false to disable it.

Public file or import?

Use public/ to keep a stable name such as robots.txt. Use an import to let Vite create a versioned name and optimize the reference.

Report an issue Edit this page
Runtime Configuration

Load typed variables without exposing secrets to the browser.

Production Build

Generate client and server bundles, then run Runable without a Vite server.

On this page

  • 1Load global styles
  • 2Keep styles local
  • 3Serve a public file
  • 4Change the public directory
Runable

The Vue framework that brings productive conventions to any backend.

Product

  • Why Runable
  • Documentation
  • Installation
  • Integrations

Project

  • About
  • Blog
  • Changelog
  • Sponsor

Community

  • GitHub
  • Issues
  • Discussions
  • Bluesky

© 2026 Runable. Released under the MIT License.

Open source Built with Vue and Runable