chianglintu/spiral-vite-bridge

Spiral bridge for Vite manifests and dev server assets.

Maintainers

Package info

github.com/chianglintu/spiral-vite-bridge

pkg:composer/chianglintu/spiral-vite-bridge

Statistics

Installs: 5

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.1.2 2026-05-30 17:12 UTC

This package is auto-updated.

Last update: 2026-05-30 17:13:04 UTC


README

Spiral bridge for Vite dev server and production manifest assets. It pairs with vite-plugin-spiral.

Install

composer require chianglintu/spiral-vite-bridge

Publish Configuration

The package ships a Spiral config file at config/vite.php. Copy it into your application:

cp vendor/chianglintu/spiral-vite-bridge/config/vite.php app/config/vite.php

Do not overwrite an existing app/config/vite.php without reviewing local changes first.

Expected location:

app/config/vite.php

Register the bootloader after Spiral views and Stempler:

use Spiral\Vite\Bootloader\ViteBootloader;

ViteBootloader::class,

Stempler

@viteReactRefresh
@viteFonts()
@vite(['app/resources/css/fonts.css', 'app/resources/css/app.css', 'app/resources/js/app.ts'])
@viteAsset('app/resources/images/logo.svg')

@viteReactRefresh is only needed for React projects. @viteFonts() is only useful when the Vite plugin fonts option is configured.

PHP API

use Spiral\Vite\Vite;

$vite->tags('app/resources/js/app.ts');
$vite->asset('app/resources/images/logo.svg');
$vite->withNonce($nonce)->tags('app/resources/js/app.ts');
$vite->useCspNonce();
$vite->useScriptTagAttributes(['data-turbo-track' => 'reload']);
$vite->useStyleTagAttributes(['data-turbo-track' => 'reload']);
$vite->useIntegrityKey('custom-integrity');
$vite->createAssetPathsUsing(fn(string $path): string => "https://cdn.example.com/{$path}");
$vite->prefetch(concurrency: 3, event: 'load');
$vite->useAggressivePrefetching();
$vite->useFontsManifestFilename('fonts-manifest.json');
$vite->asset('app/resources/images/logo.svg', buildDirectory: 'admin-build');
$vite->content('app/resources/snippet.txt', buildDirectory: 'admin-build');
$vite->manifestHash(buildDirectory: 'admin-build');
$vite->toHtml();
$vite->flush();

Configuration supports enabled, public_directory, build_directory, hot_file, asset_url, manifest, ssr_manifest, fonts_manifest, integrity_key, and fail_loud. Missing manifests, missing entries, invalid JSON, and invalid hot URLs throw explicit exceptions.

Common environment variables:

VITE_ENABLED=true
SPIRAL_VITE_ASSET_URL=
ASSET_URL=

Useful state helpers:

  • hotFile() returns the active hot file path.
  • isRunningHot() aliases dev-server detection.
  • preloadedAssets() returns the modulepreload / prefetch URLs collected during tag rendering.

@viteFonts() renders font preloads plus stylesheet or inline @font-face output from the plugin fonts manifest, including optimized fallback CSS when generated.

Testing

Use Spiral\Vite\Testing\InteractsWithVite in Spiral tests and call withoutVite() to disable manifest lookups for a test. Disabled Vite renders empty tags and returns normalized fallback asset paths.