We use packages in Laravel everyday. But few of us never tried to develop their own packages in Laravel. Today we are trying to make our own package in Laravel.
1. Setting Up Laravel project
First we need to install Laravel 8 by running this command.
composer create-project laravel/laravel shop-app
2. Setting Up Directory Structure
Now suppose we are creating package for Shop app for Laramatic tutorial. Create laramatic/shop/src directory into root.
3. Initiating Composer
Now run following command in src to initiate Composer.
composer init
Once we have full information we will get this output on our command line. This is just easy.
4. Add Configuration
Now create laramatic/shop/src/config/shop.php file and add this code there.
return [
'api_key' => env( 'SHOP_API_KEY' ),
'api_secret' => env( 'SHOP_API_SECRET' ),
'api_url' => env( 'SHOP_API_URL' )
];
This will help us to use environment variables in our code.
5. Add Service Provider
Now you can create Service Provider in laramatic/shop/src/ShopServiceProvider.php and copy following code there.
namespace Laramatic\Shop;
use Illuminate\Support\ServiceProvider;
class ShopServiceProvider extends ServiceProvider {
/**
* Register any application services.
*
* @return void
*/
public function register() {
parent::register();
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot() {
$this->publishes( [
__DIR__ . '/../config/shop.php' => config_path( 'shop.php' )
], 'shop' );
}
}
This code will publish configuration for our package. We can use it to publish migrations and many other tasks.
6. Add Product file
Now we will add Product.php file in src folder. This file contains methods which we will use in our code if we have created this package.
namespace Laramatic\Product;
class Product {
public function testShopPackage() {
echo "our package is working fine";
}
}
7. Update Composer file
Now we will update our composer.json file accordingly. Add this code in your composer file.
"require": {},
"autoload": {
"Laramatic\\Shop\\": "src/"
},
"extra": {
"laravel": {
"providers": [
"Laramatic\\Shop\\ShopServiceProvider"
]
}
}
Your composer.json should look like this.
8. Update main Composer file
Now add following code in main composer file in root.
"repositories": [
{
"type": "path",
"url": "laramatic/shop",
"options": {
"symlink": true
}
}
],
"license": "",
"require": {
"laramatic/shop": "dev-develop"
}
Leave a Review