Laravel Chisel — la bibliothèque de scripts post-installation des starter kits
Présentation de laravel/chisel. Un package qui fournit des primitives pour construire des scripts post-installation supprimant les fonctionnalités inutiles d’un starter kit. Publié en v0.1 en mai 2026.
Cet article s’appuie sur une exploration du code source. Il s’agit d’un package en tout début de développement, dont le tag v0.1 vient d’être posé (à la date de mai 2026).
Laravel Chisel est un package qui fournit des primitives pour construire des scripts post-installation destinés à supprimer les fonctionnalités inutiles d’un starter kit Laravel.Un starter kit embarque beaucoup de fonctionnalités prêtes à l’emploi, mais selon le projet, certaines d’entre elles peuvent être inutiles. Chisel résout ce problème en proposant, après l’installation, un mécanisme interactif permettant de « ne conserver que les fonctionnalités nécessaires ».
Les starter kits Laravel regroupent beaucoup de fonctionnalités, mais aucun projet n’a besoin de toutes les avoir. Par exemple :
Projets qui n’ont pas besoin de vérification par e-mail
Projets qui n’utilisent pas l’authentification par passkey
Configurations où certains composants Livewire sont superflus
Jusqu’ici, il fallait supprimer manuellement ces fonctionnalités ; avec Chisel, la personnalisation se fait via des prompts interactifs au moment de l’installation.
Un starter kit qui utilise Chisel place un fichier chisel.php à la racine du projet. Ce fichier définit « quelles fonctionnalités sont optionnelles ».
<?phprequire getenv('LARAVEL_INSTALLER_AUTOLOADER');use Laravel\Chisel\Chisel;use Laravel\Chisel\Question;return Chisel::script(dirname(__DIR__)) ->questions([ Question::multiselect( name: 'auth_features', label: 'Which authentication features would you like to enable?', options: [ 'email-verification' => 'Email verification', ], hint: 'Use space to select, enter to confirm.', ), ]) ->selected('auth_features', 'email-verification', then: function (Chisel $c) { // Cas sélectionné : on retire les marqueurs et on garde le code $c->files( 'resources/js/pages/settings/profile.tsx', 'app/Providers/FortifyServiceProvider.php', )->removeSectionMarkers('email-verification'); }, else: function (Chisel $c) { // Cas non sélectionné : on supprime les fichiers et fonctionnalités liés $c->php('app/Models/User.php') ->removeImport('Illuminate\Contracts\Auth\MustVerifyEmail') ->removeInterface('MustVerifyEmail'); $c->file('config/fortify.php')->removeLinesContaining('Features::emailVerification()'); $c->files( 'app/Providers/FortifyServiceProvider.php', 'resources/js/pages/settings/profile.tsx', )->removeSection('email-verification'); $c->files( 'resources/js/components/email-verification-notice.tsx', 'resources/js/pages/auth/verify-email.tsx', 'tests/Feature/Auth/EmailVerificationTest.php', 'tests/Feature/Auth/VerificationNotificationTest.php', )->delete(); }, );
collectAnswers() retourne un collecteur de réponses. Toutes les méthodes sont fluent et peuvent être appelées dans n’importe quel ordre. En environnement non interactif, les valeurs par défaut sont utilisées automatiquement.Une commande Artisan externe affiche les prompts à l’aide de Laravel Prompts et transmet les réponses à Chisel.
php($path) fournit une édition basée sur l’AST PHP. Les modifications sont sauvegardées automatiquement lorsque l’objet est libéré.Les bases de l’AST PHP (arbre syntaxique abstrait) et l’utilisation de nikic/php-parser sont expliquées ici.
Historique : rendu public après trois mois de développement privé
Chisel n’est pas un package que l’utilisateur final installe directement dans son application Laravel : c’est une bibliothèque utilisée en interne par les starter kits. À terme, on peut s’attendre à ce que les starter kits officiels Laravel proposent des scripts post-installation basés sur Chisel.
Dépôt laravel/chisel
Le code source et la référence d’API la plus récente sont ici.
Documentation officielle des starter kits Laravel
Pour l’utilisation des starter kits eux-mêmes, consultez la documentation officielle.