All Projects → spatie → Laravel Mix Preload

spatie / Laravel Mix Preload

Licence: mit
Add preload and prefetch links based your Mix manifest

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Laravel Mix Preload

Laravel Varnish
Making Varnish and Laravel play nice together
Stars: ✭ 291 (+79.63%)
Mutual labels:  laravel, performance
Performance
⏱ PHP performance tool analyser your script on time, memory usage and db query. Support Laravel and Composer for web, web console and command line interfaces.
Stars: ✭ 429 (+164.81%)
Mutual labels:  laravel, performance
Laravel S
LaravelS is an out-of-the-box adapter between Swoole and Laravel/Lumen.
Stars: ✭ 3,479 (+2047.53%)
Mutual labels:  laravel, performance
Laravel Partialcache
Blade directive to cache rendered partials in laravel
Stars: ✭ 205 (+26.54%)
Mutual labels:  laravel, performance
Laravel Image Optimizer
Optimize images in your Laravel app
Stars: ✭ 873 (+438.89%)
Mutual labels:  laravel, performance
Laravel Zero
A PHP framework for console artisans
Stars: ✭ 2,821 (+1641.36%)
Mutual labels:  laravel, performance
Laravel Model Cleanup
Clean up unneeded records
Stars: ✭ 388 (+139.51%)
Mutual labels:  laravel, performance
Meter
Laravel package to find performance bottlenecks in your laravel application.
Stars: ✭ 204 (+25.93%)
Mutual labels:  laravel, performance
Laravel Binary Uuid
Optimised binary UUIDs in Laravel
Stars: ✭ 523 (+222.84%)
Mutual labels:  laravel, performance
Laravel Pjax
A pjax middleware for Laravel
Stars: ✭ 487 (+200.62%)
Mutual labels:  laravel, performance
Enlightn
Your performance & security consultant, an artisan command away.
Stars: ✭ 378 (+133.33%)
Mutual labels:  laravel, performance
Aimeos
Integrated online shop based on Laravel 8 and the Aimeos e-commerce framework
Stars: ✭ 2,354 (+1353.09%)
Mutual labels:  laravel, performance
Iris
The fastest HTTP/2 Go Web Framework. AWS Lambda, gRPC, MVC, Unique Router, Websockets, Sessions, Test suite, Dependency Injection and more. A true successor of expressjs and laravel | 谢谢 https://github.com/kataras/iris/issues/1329 |
Stars: ✭ 21,587 (+13225.31%)
Mutual labels:  laravel, performance
Laravel Blink
Cache that expires in the blink of an eye
Stars: ✭ 114 (-29.63%)
Mutual labels:  laravel, performance
Laravel Responsecache
Speed up a Laravel app by caching the entire response
Stars: ✭ 1,874 (+1056.79%)
Mutual labels:  laravel, performance
Laravel Enum
Laravel support for spatie/enum
Stars: ✭ 158 (-2.47%)
Mutual labels:  laravel
Laravel Early Access
This package makes it easy to add early access mode to your existing application.
Stars: ✭ 160 (-1.23%)
Mutual labels:  laravel
Pingcrm React
⚛️ Ping CRM React - A demo app to illustrate how Inertia.js works with Laravel and React (hosted on a heroku free dyno).
Stars: ✭ 158 (-2.47%)
Mutual labels:  laravel
Image Optimizer
Easily optimize images using PHP
Stars: ✭ 2,127 (+1212.96%)
Mutual labels:  performance
Envoy Deployscript
Laravel Envoy Deployment Script
Stars: ✭ 160 (-1.23%)
Mutual labels:  laravel

Add preload and prefetch links based your Mix manifest

Latest Version on Packagist Build Status Total Downloads

<head>
    <title>Preloading things</title>

    @preload
</head>

This package exposes a @preload Blade directive that renders preload and prefetch links based on the contents in mix-manifest.json. Declaring what should be preloaded or prefetched is simple, just make sure preload or prefetch is part of the chunk name.

If this is your mix manifest:

{
    "/js/app.js": "/js/app.js",
    "/css/app.css": "/css/app.css",
    "/css/prefetch-otherpagecss.css": "/css/prefetch-otherpagecss.css",
    "/js/preload-biglibrary.js": "/js/preload-biglibrary.js",
    "/js/vendors~preload-biglibrary.js": "/js/vendors~preload-biglibrary.js"
}

The following links will be rendered:

<link rel="prefetch" href="/css/prefetch-otherpagecss.css" as="style">
<link rel="preload" href="/js/preload-biglibrary.js" as="script">
<link rel="preload" href="/js/vendors~preload-biglibrary.js" as="script">

Not sure what this is about? Read Addy Osmani's article Preload, Prefetch And Priorities in Chrome.

Support us

We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products.

We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall.

Installation

You can install the package via composer:

composer require spatie/laravel-mix-preload

Usage

Add a @preload directive to your applications layout file(s).

<!doctype html>
<html>
    <head>
        ...
        @preload
    </head>
    <body>
        ...
    </body>
</html>

You can determine which scripts need to be preloaded or prefetched by making sure preload or prefetch is part of their file names. You can set the file name by creating a new entry in Mix, or by using dynamic imports.

Adding a second entry

By default, Laravel sets up Mix with a single app.js entry. If you have another script outside of app.js that you want to have preloaded, make sure preload is part of the entry name.

mix
    .js('resources/js/app.js', 'public/js');
    .js('resources/js/preload-maps.js', 'public/js');

If you want to prefetch the script instead, make sure prefetch is part of the entry name.

mix
    .js('resources/js/app.js', 'public/js');
    .js('resources/js/prefetch-maps.js', 'public/js');

Using dynamic imports with custom chunk names

If you want to preload a chunk of your application scripts, make sure preload is part of the chunk name. You can use Webpack's magic webpackChunkName comment to set the module's chunk name.

import('./maps' /* webpackChunkName: "preload-maps" */).then(maps => {
    maps.init();
});

The same applies to prefetching.

import('./maps' /* webpackChunkName: "prefetch-maps" */).then(maps => {
    maps.init();
});

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Postcardware

You're free to use this package, but if it makes it to your production environment we highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using.

Our address is: Spatie, Kruikstraat 22, 2018 Antwerp, Belgium.

We publish all received postcards on our company website.

Credits

License

The MIT License (MIT). Please see License File for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].