Addons are composer packages that are specifically designed for Laravel Streams. Addons and can be distributed anywhere composer packages can be distributed (Packagist, SATIS, etc.)

Addon Development

Creating addons is a great way to distribute reusable code as well as encapsulate and organize large project components. Before developing addons you should have a basic understanding of integrating with Laravel Streams as well as a general understanding of Composer packages.

Defining Addons

Mark your composer package as a streams-addon using the type parameter:

// addons/example/widgets/composer.json
    "name": "example/widgets",
    "description": "Widgets for your example project.",
    "type": "streams-addon",

Service Providers

Using service providers is the easiest way to integrate with Laravel and Streams. You can specify autodetected service providers using the composer.json file.

// addons/example/widgets/composer.json
    "extra": {
        "laravel": {
            "providers": [

Local Packages

Using repository paths you can acheive local-only, application-specific, or development installations of addons.

// composer.json
    "repositories": [{
        "type": "path",
        "url": "addons/examples/widget",
        "options": {
            "symlink": true

Installing Addons

Generally speaking, installing an addon requires downloading it with composer and optionally publishing it's assets and any migrations. There is no addon manager to control state.

    "require": {
        // ...
        "example/addon": "dev-master"