Logomark

LARAVEL

Un framework qui rend heureux
Voir cette catégorie
Vers le bas
Nice Artisan
Vendredi 26 septembre 2025 15:39

Artisan est un outil incontournable de Laravel. Il est apprécié pour sa simplicité et son efficacité. Mais malgré ses nombreuses qualités, certains pourraient trouver son interface de ligne de commande limitante. Bien que cette interface soit nécessaire pour certaines fonctions, la plupart des commandes pourraient être plus facilement accessibles via une interface web.
Cette idée a évolué vers la création d'un package Laravel que j'avais créé alors qu'on en était encore à la version 5 de Laravel, ouvrant ainsi la voie à une interface web pour Artisan. Cette tâche exigeait de s'immerger dans le code source, notamment dans celui de Symfony, sur lequel Artisan repose. Au terme d'un travail délicat, j'avais finalement abouti à un produit fonctionnel et prêt à être utilisé. Depuis je l'ai fait évoluer au fil des versions de Laravel.
Ce package offre plusieurs avantages :
  1. Accessibilité: une interface web rend les commandes Artisan plus faciles à utiliser, particulièrement pour les développeurs qui n'ont pas l'habitude des interfaces en ligne de commande
  2. Fonctionnalités étendues : la possibilité d'intégrer des fonctionnalités supplémentaires via une interface web
  3. Productivité accrue : une interface web peut accélérer les processus de développement en permettant aux développeurs de gérer leurs commandes Artisan sans avoir à quitter leur navigateur web

En conclusion, la création d'un package Laravel fournissant une interface web pour Artisan permet de rendre cet outil plus abordable et plus efficace, apportant ainsi une plus-value significative aux développeurs utilisant Laravel pour leurs projets. Le présent article a pour but de vous faire découvrir ce package.

Cet article a été précédemment publié en 2024, mais je l'ai remanié à l'occasion de la sortie de la version 2 du package.

Installation

Le projet est hébergé sur Github :

Pour installer le package, c'est facile, il suffit d'utiliser Composer :

composer require bestmomo/nice-artisan

Et ça devrait fonctionner !

L'interface d'Artisan est alors active avec l'url .../niceartisan :

Les commandes sont classées par catégories. Celles qui ne rentrent dans aucune de ces catégories sont rassemblées dans Misc.

Avec la version 2 est apparue la possibilité de rassembler les commandes préférées dans la catégorie Favorites.

Utilisation

Il suffit de cliquer sur la commande voulue pour ouvrir le panneau correspondant, par exemple pour créer une classe pour les emails :

On entre le nom et on coche les options voulues :

Il ne reste plus alors qu'à cliquer sur le bouton. Si tout s'est bien passé, on reçoit un message de succès :

Et on trouve bien la classe à sa place :

 

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;

class MonEmail extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     */
    public function __construct()
    {
        //
    }

    /**
     * Get the message envelope.
     */
    public function envelope(): Envelope
    {
        return new Envelope(
            subject: 'Mon Email',
        );
    }

    /**
     * Get the message content definition.
     */
    public function content(): Content
    {
        return new Content(
            view: 'on',
        );
    }

    /**
     * Get the attachments for the message.
     *
     * @return array<int, \Illuminate\Mail\Mailables\Attachment>
     */
    public function attachments(): array
    {
        return [];
    }
}

Je ne vais évidemment pas détailler toutes les commandes parce que le principe est toujours le même. Par exemple pour les routes :

Il devient très facile avec un simple clic d'afficher la liste ou de nettoyer le cache, des actions très fréquentes quand on développe.

Sécurité

Ce package est plutôt destiné au développement local. Si vous voulez l'utiliser sur votre serveur de production, il faut sécuriser l'accès aux commandes pour une évidente question de sécurité.

Il faut commencer par publier le fichier de configuration :

php artisan vendor:publish --tag=niceartisan:config

Voici le fichier de configuration (config/niceartisan.php) :

<?php

return [
    'middleware' => 'niceartisan',
];

Utilisez ce nom ou choisir n'importe quel nom à votre choix.

Créez votre middleware (pourquoi pas avec Nice Artisan ?) :

Adaptez la condition selon la gestion des utilisateurs :

  public function handle(Request $request, Closure $next): Response
  {
    if (** votre logique ici **)
    {
      abort(403);
    }
    return $next($request);
  }

Et n'oubliez pas de le déclarer dans bootstrap/app.php :

->withMiddleware(function (Middleware $middleware) {
  $middleware->alias([
    'niceartisan' => \App\Http\Middleware\NiceArtisan::class,
  ]);
})

Maintenant, seules les personnes autorisées pourront jouer avec les commandes d'Artisan, ce qui est plus sûr.

La recherche

On ne connait pas forcément toutes les commandes Artisan. Le classement par catégories est déjà une première approche efficace. Si ça ne suffit pas j'ai ajouté la possibilité de faire une recherche :

Et voilà le résultat :

Favoris

Même avec des catégories et une recherche efficace, il reste le fait qu'Artisan est très riche. On est bien loin d'utiliser toutes les commandes. En général, on se limite à un certain nombre de commandes usuelles. On peut ajouter, ou retirer, des commandes dans la catégorie des favoris. Chaque commande dispose d'un bouton qui permet d'ajouter aux favoris ou de retirer des favoris :

On accède à ces favoris avec l'item Favorites de la barre.

Conclusion

J'espère que ce petit outil vous simplifiera la vie !



Par bestmomo

Aucun commentaire