orchestra/canvas

Code Generators for Laravel Applications and Packages

Maintainers

👁 crynobone

Package info

github.com/orchestral/canvas

pkg:composer/orchestra/canvas

Statistics

Installs: 20 063 462

Dependents: 174

Suggesters: 0

Stars: 209

Open Issues: 1

v11.0.1 2026-03-18 22:46 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT d240410f4cd89b380d7d89b5bbaf60c32f4fb691

  • Taylor Otwell <taylor.woop@laravel.com>
  • Mior Muhammad Zaki <crynobone.woop@gmail.com>

This package is auto-updated.

Last update: 2026-05-25 21:48:06 UTC


README

Canvas replicates all of the make artisan commands available in your basic Laravel application. It allows everyone to use it:

  • outside of Laravel installation such as when building Laravel packages.
  • with Laravel by allowing a few customizations to the stub resolved class and namespace.

👁 tests
👁 Latest Stable Version
👁 Total Downloads
👁 Latest Unstable Version
👁 License
👁 Coverage Status

Installation

To install through composer, run the following command from the terminal:

composer require --dev "orchestra/canvas"

Usages

As a Laravel developer, you should be familiar with the following commands:

Command. Description
make:channel Create a new channel class
make:command Create a new Artisan command
make:controller Create a new controller class
make:event Create a new event class
make:exception Create a new custom exception class
make:factory Create a new model factory
make:job Create a new job class
make:listener Create a new event listener class
make:mail Create a new email class
make:middleware Create a new middleware class
make:migration Create a new migration file
make:model Create a new Eloquent model class
make:notification Create a new notification class
make:observer Create a new observer class
make:policy Create a new policy class
make:provider Create a new service provider class
make:request Create a new form request class
make:resource Create a new resource
make:rule Create a new validation rule
make:seeder Create a new seeder class
make:test Create a new test class

Which can be executed via:

php artisan make:migration CreatePostsTable --create

With Canvas, you can run the equivalent command via:

vendor/bin/canvas make:migration CreatePostsTable --create

canvas.yaml Preset file

To get started you can first create canvas.yaml in the root directory of your Laravel project or package.

Laravel preset

You can run the following command to create the file:

vendor/bin/canvas preset laravel

Which will output the following as canvas.yaml:

preset: laravel

namespace: App

model:
 namespace: App

Package preset

You can run the following command to create the file:

vendor/bin/canvas preset package

Which will output the following as canvas.yaml:

preset: package

namespace: PackageName
user-auth-provider: App\User

paths:
 src: src
 resource: resources

factory:
 path: database/factories

migration:
 path: database/migrations
 prefix: ''

console:
 namespace: PackageName\Console

model:
 namespace: PackageName

provider:
 namespace: PackageName

testing:
 namespace: PackageName\Tests

You need to change PackageName to the root namespace for your package.

Alternatively, you can set --namespace option to ensure the namespace is used in the file:

vendor/bin/canvas preset package --namespace="Foo\Bar"
preset: package

namespace: Foo\Bar
user-auth-provider: App\User

paths:
 src: src
 resource: resources

factory:
 path: database/factories

migration:
 path: database/migrations
 prefix: ''

console:
 namespace: Foo\Bar\Console

model:
 namespace: Foo\Bar
 
provider:
 namespace: Foo\Bar

testing:
 namespace: Foo\Bar\Tests

Integration with Laravel

By default, you can always use composer exec canvas for Laravel and Packages environment. However, with the Package Discovery Orchestra\Canvas\LaravelServiceProvider will be installed automatically and override all default make commands available via artisan so you can use it without changing anything.