AgentSkillsCN

laravel-vite

为 Laravel 完成 Vite 打包——包括资源打包、HMR、SSR、框架支持及优化。适用于配置前端构建流程时。

SKILL.md
--- frontmatter
name: laravel-vite
description: Complete Vite bundling for Laravel - assets, HMR, SSR, frameworks, optimization. Use when configuring frontend build pipeline.
versions:
  laravel: "12.x"
  vite: "6.x"
  php: "8.4"
user-invocable: true
references: references/setup.md, references/entry-points.md, references/preprocessors.md, references/assets.md, references/environment.md, references/dev-server.md, references/build-optimization.md, references/ssr.md, references/inertia.md, references/frameworks.md, references/security.md, references/deployment.md, references/templates/ViteConfig.js.md, references/templates/ViteConfigAdvanced.js.md, references/templates/InertiaSetup.md, references/templates/SSRSetup.md
related-skills: laravel-blade, laravel-livewire, fusecore

Laravel Vite

Agent Workflow (MANDATORY)

Before ANY implementation, use TeamCreate to spawn 3 agents:

  1. fuse-ai-pilot:explore-codebase - Check existing vite.config.js, package.json
  2. fuse-ai-pilot:research-expert - Verify latest Vite docs via Context7
  3. mcp__context7__query-docs - Query specific patterns (SSR, Inertia)

After implementation, run fuse-ai-pilot:sniper for validation.


Overview

Vite is Laravel's default frontend build tool. It provides fast HMR in development and optimized builds for production.

FeaturePurpose
HMRInstant updates during development
BundlingOptimized production assets
SSRServer-side rendering support
FrameworksVue, React, Svelte integration

Critical Rules

  1. Always use laravel-vite-plugin - Never raw Vite config
  2. VITE_ prefix for env vars - Only exposed to frontend
  3. Use @vite directive - Not manual script tags
  4. Build before deploy - npm run build in CI/CD
  5. Configure HMR for Docker - Set server.host: '0.0.0.0'

Decision Guide

Stack Selection

code
Using Tailwind CSS?
├── YES → v4? @tailwindcss/vite plugin
│         v3? PostCSS config
└── NO → Just laravel-vite-plugin

Using JavaScript framework?
├── Vue → @vitejs/plugin-vue
├── React → @vitejs/plugin-react
├── Svelte → @sveltejs/vite-plugin-svelte
└── None → Plain JS/CSS only

SSR Decision

code
Need SEO/fast first paint?
├── YES → Using Inertia?
│   ├── YES → Inertia SSR
│   └── NO → Consider Inertia or Livewire
└── NO → Client-side only

Reference Guide

Concepts (WHY & Architecture)

TopicReferenceWhen to Consult
Setupsetup.mdInitial configuration
Entry Pointsentry-points.mdMultiple bundles
Preprocessorspreprocessors.mdSass, Less, PostCSS
Assetsassets.mdImages, fonts, static
Environmentenvironment.mdVITE_ variables
Dev Serverdev-server.mdHMR, Docker, HTTPS
Buildbuild-optimization.mdChunks, minification
SSRssr.mdServer-side rendering
Inertiainertia.mdSPA without API
Frameworksframeworks.mdVue, React, Svelte
Securitysecurity.mdCSP nonce
Deploymentdeployment.mdProduction, CDN

Templates (Complete Code)

TemplateWhen to Use
ViteConfig.js.mdStandard setup
ViteConfigAdvanced.js.mdFull optimization
InertiaSetup.mdInertia + Vue/React
SSRSetup.mdSSR configuration

Quick Reference

Basic Setup

javascript
// vite.config.js
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
    ],
});

Blade Directive

blade
<!DOCTYPE html>
<head>
    @vite(['resources/css/app.css', 'resources/js/app.js'])
</head>

Commands

CommandPurpose
npm run devStart dev server
npm run buildProduction build
npm run previewPreview build

Best Practices

DO

  • Use refresh: true for Blade HMR
  • Configure aliases for clean imports
  • Split vendors into separate chunks
  • Use VITE_ prefix for frontend env vars
  • Test Docker/Sail config locally

DON'T

  • Expose sensitive data via VITE_ vars
  • Forget to build before deploying
  • Use absolute paths for assets
  • Skip source maps in staging
  • Ignore chunk size warnings