Installation
Install the package with Composer, run the installer, wire two entry files into Vite, then build. AdminLTE 4 for Laravel uses a Vite-first asset pipeline — no precompiled CSS/JS is shipped into your app.
1. Require the package
composer require colorlibhq/adminlte-laravel
2. Run the installer
php artisan adminlte:install
This will:
- Publish
config/adminlte.php. - Drop the Vite entry stubs into
resources/css/adminlte.cssandresources/js/adminlte.js. - Offer to
npm installthe frontend dependencies, pinned to the tested major versions:admin-lte@^4.0,bootstrap@^5.3,@popperjs/core@^2.11,overlayscrollbars@^2.0,bootstrap-icons@^1.13,apexcharts@^5.0,jsvectormap@^1.7,fullcalendar@^6.1,sortablejs@^1.15,sass@^1.77. - Copy plugin vendor files (ApexCharts, jsVectorMap, FullCalendar, SortableJS, plus the AdminLTE RTL stylesheet) into
public/vendor/.
Publish tags
The installer wraps Laravel's vendor:publish. You can also publish individual asset groups directly by tag, or scope the installer with --only:
| Publish tag | Installer flag | Publishes |
|---|---|---|
adminlte-config | --only=config | config/adminlte.php |
adminlte-views | --only=views | Blade views → resources/views/vendor/adminlte |
adminlte-assets | --only=assets | Vite stubs → resources/js/adminlte.js, resources/css/adminlte.css |
adminlte-lang | --only=lang | Translations → lang/vendor/adminlte |
php artisan vendor:publish --tag=adminlte-config
php artisan adminlte:install --only=views --force
3. Wire Vite
Add the two published entry files to your vite.config.js input array:
import { defineConfig } from 'vite'
import laravel from 'laravel-vite-plugin'
export default defineConfig({
plugins: [
laravel({
input: [
'resources/css/adminlte.css',
'resources/js/adminlte.js',
],
refresh: true,
}),
],
})
4. Build assets
npm run dev # development (HMR)
npm run build # production
5. Create your first page
{{-- resources/views/dashboard.blade.php --}}
@extends('adminlte::page')
@section('title', 'Dashboard')
@section('content_header')
<h3 class="mb-0">Dashboard</h3>
@stop
@section('content')
<x-adminlte-info-box title="Orders" text="150" icon="bi bi-bag" theme="primary" />
@stop
// routes/web.php
Route::view('/', 'dashboard')->middleware('auth');
6. Verify
php artisan adminlte:status
This reports which resources are installed: config, stubs, published views, npm packages, plugin vendor files and scaffolded sections.
Optional plugins (Flatpickr, Tom Select, Tabulator, Quill) are disabled by default and not installed. Add them only if you enable them in config/adminlte.php: npm install -D flatpickr@^4.6 tom-select@^2.4 tabulator-tables@^6.0 quill@^2.0. See Charts & Plugins.
Next step
Edit your configuration — see Configuration.