Back to Homepage

Laravel Package: Create Package from Scratch Tutorial

4 min read


Laravel Package: Create Package from Scratch Tutorial

Introduction to Laravel Package Development

Hey there, aspiring Laravel developers! Ready to embark on an epic journey into the world of Laravel package development? Buckle up, because we're about to dive headfirst into a enlightening tutorial that will make you question your life choices!

Now, you might be wondering, why on earth would anyone want to create their own Laravel package? Isn't it enough to just use the endless array of packages out there in the open-source universe? Well, my friend, I'll tell you why - because who needs pre-built solutions when you can spend countless hours reinventing the wheel?

Get ready for some serious developer enlightenment as we uncover all the secrets behind building powerful Laravel packages. Trust me; by the end of this tutorial, you'll be the proud parent of your very own package.

Reasons to Develop a Laravel Package

So, you're thinking about developing a package? Well, why not add another layer of complexity to your already complicated Laravel project? It's definitely worth the headache!

Composer & Packagist

Composer and Packagist, the dynamic duo that saves developers from reinventing the wheel. Pure genius!


So you've decided to dive into the world of package development? Brace yourself, because the Prologue is just the beginning!

Getting Started

So, you want to get started with creating your own Laravel package? Well, lucky you! It's just a breeze. Good luck!

Step 1: The first step is to create a new Laravel project

To create a package, you need to have a Laravel project. If you don't have one, you can create one using Composer:

Create-project --prefer-dist laravel/laravel my-awesome-package

Well you can replace my-awesome-package with the name of your desired project.

Step 2: The second step is to create a new package directory. The next step is to create a directory outside of your Laravel project directory to house your package. For example:

mkdir my-awesome-package

Then, cd to my-awesome-package

Step 3: The third step is to initialize a Composer package. Create a new Composer package inside your package directory:

composer init

Fill out the details about your package, such as its name, description, author, and license.

Step 4: The fourth step is to create the package structure. The next step is to create the basic structure of your Laravel package. Here's an example:


The src directory should contain the main service provider file MyPackageServiceProvider.php.

Step 5: The fifth step is to write the service provider

Create a basic service provider in MyPackageServiceProvider.php to define how your package interacts with Laravel. Here's an example:


namespace YourNamespace\MyPackage;

use Illuminate\Support\ServiceProvider;

class MyPackageServiceProvider extends ServiceProvider
    public function register()
        // Register your awesome package's functionality here

    public function boot()
        // Perform any bootstrapping, like publishing configuration files

Replace YourNamespace\MyPackage with your actual namespace.

Step 6: Update Composer Autoload in Step 6

Add your package's namespace to the autoload section of composer.json:

"autoload": {
    "psr-4": {
        "YourNamespace\\MyPackage\\": "src/"

Step 7: The seventh step is to register the package with Laravel

Add your package's service provider to your Laravel project's config/app.php:

'providers' => [
    // ...

The final step is to publish the configuration (optional).

Run the following command to publish your package's configuration files to the Laravel project:

php artisan vendor:publish --tag=my-package-config

In your service provider's boot method, define the tag.

Step 8: The 8th step is to develop your package

You can now add controllers, models, views, routes, and any other components needed for your package within the src directory.

Consider hosting your package on GitHub and publishing it to Packagist so that others can easily install it using Composer.


Run the following command to install your package in another Laravel project:

Your-vendor/your-awesome-package is required by composer

Replace your-vendor/your-package with the actual package name you specified in composer.json.

And finally, we come to the grand finale of Laravel package development - using lifecycle hooks. Because let's face it, what's a good package without some fancy hooks to make your life even more interesting?

But wait, there's more! You can also use these hooks to register service providers, add middleware, or even modify existing functionality. It's like having the power to bend Laravel to your will with just a few lines of code.

Now armed with this knowledge, you have the tools at your disposal to create amazing packages that will make developers around the world swoon with envy.

So go forth and conquer the world of Laravel packages! And remember: always stay curious and keep pushing yourself further because there is no limit to what you can achieve in this vast universe called software development.

Happy coding!

Check Top Packages for Laravel. Official Documentation at Laravel

Follow @LaravelSage on X → Follow @LaravelSage on Facebook →
Aniket Singh

Aniket Singh

View All Articles

Full-stack developer with a knack for Merging creativity with technical expertise for standout solutions.

Related Articles

data_forget Helper for Laravel

data_forget Helper for Laravel

Since Laravel version 10.15, there is a new utility function called data_forget that allows you to remove keys from an array or object using a "dot" notation.

Laravel Tenant Application with Tenancy

Laravel Tenant Application with Tenancy

You can make your Laravel app multi-tenant using the Tenancy for Laravel Tenant package. This tenancy package lets you make any Laravel application multi-tenant without rewriting it.

Top Laravel Packages for Building Powerful Applications

Top Laravel Packages for Building Powerful Applications

Are you ready to take your Laravel skills to the next level and build extraordinary applications? Look no further! In this blog post, we will unveil a treasure trove of top packages that will revolutionize your development process.

Subscribe for 20+ new Laravel tutorials every week

You can unsubscribe at any time. You'll also get -20% off my courses!

© 2024


Laravel Sage

   |    Privacy Policy