revolution/laravel-vercel-installer

Vercel Installer

Fund package maintenance!
invokable

Installs: 19 266

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 2

Forks: 1

1.3.0 2025-02-18 03:52 UTC

This package is auto-updated.

Last update: 2025-05-30 04:50:56 UTC


README

Maintainability Code Coverage

Install some files to run Laravel on Vercel.

Requirements

  • PHP >= 8.2
  • Laravel >= 11.0

Installation

composer require revolution/laravel-vercel-installer --dev

php artisan vercel:install

Uninstall

composer remove revolution/laravel-vercel-installer --dev

Once you have run the command you can uninstall this package.

vercel.json

It will probably not work with the new spec that uses functions and rewrites in vercel.json.

regions

https://vercel.com/docs/edge-network/regions

builds

vercel-php@0.7.3 is PHP8.3

To use another version, check this repository. https://github.com/vercel-community/php

routes

If there are other files in public, add them to routes.

    {
        "src": "/images/(.*)",
        "dest": "/public/images/$1"
    },

env

Secret env is set in the vercel settings page.

php artisan key:generate --show command generates a new key without updating the .env file. Set this key on the Settings page APP_KEY.

Database

You can use Vercel Postgres or AWS RDS.

https://vercel.com/docs/storage/vercel-postgres

Cache and session

You can't use the file driver.

If you're using a database, you can use the database driver.

TrustProxies

Laravel 10

If you have any problems with TrustProxies, change /app/Http/Middleware/TrustProxies.php.

class TrustProxies extends Middleware
{
    /**
     * The trusted proxies for this application.
     *
     * @var array<int, string>|string|null
     */
    protected $proxies = '*';

Laravel 11

Change /bootstrap/app.php

->withMiddleware(function (Middleware $middleware) {
        $middleware->trustProxies(at: '*');
    })

API prefix

If you use Laravel's API routes, you will need to change the /api/ route as it conflicts with Vercel.

Laravel 11

/bootstrap/app.php

use Illuminate\Foundation\Application;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        api: __DIR__.'/../routes/api.php',
        apiPrefix: 'prefix/api',
        health: '/up',
    )

Disable build cache

Deployment often fails when you increase the package version in composer.json. To solve this, add VERCEL_FORCE_NO_BUILD_CACHE to Vercel's project settings - Environment Variables. Setting it in vercel.json probably won't solve the problem.

  • VERCEL_FORCE_NO_BUILD_CACHE : 1

https://vercel.com/docs/deployments/troubleshoot-a-build#managing-build-cache

LICENSE

MIT