orchestral / canvas by crynobone

Code Generators for Laravel Applications and Packages
4,820,780
194
4
Package Data
Maintainer Username: crynobone
Maintainer Contact: taylor@laravel.com (Taylor Otwell)
Package Create Date: 2020-01-01
Package Last Update: 2024-11-14
Home Page: https://packagist.org/packages/orchestra/canvas
Language: PHP
License: MIT
Last Refreshed: 2024-11-15 15:20:09
Package Statistics
Total Downloads: 4,820,780
Monthly Downloads: 319,959
Daily Downloads: 13,677
Total Stars: 194
Total Watchers: 4
Total Forks: 12
Total Open Issues: 0

Code Generators for Laravel Applications and Packages

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 few customization to the stub resolved class and namespace.

Build Status Latest Stable Version Total Downloads Latest Unstable Version License Coverage Status

Installation

To install through composer, run the following command from 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 execute 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 ./vendor/bin/canvas for Laravel and Packages environment. However, with the Package Discovery Orchestra\Canvas\LaravelServiceProvider will be installed automatically and override all default make command available via artisan so you can use it without changing anything.