Créons une nouvelle branch dans notre projet
git checkout -b laravel-upgrade
Ajouter le dépôt de laravel
git remote add laravel https://github.com/laravel/laravel.git
Récupérer les informations du dépôt
git fetch laravel
Merger la version 8.x
git merge laravel/8.x fatal: refus de fusionner des historiques sans relation
git merge --no-commit --allow-unrelated-histories laravel/8.x
Valider tous les conflits avec l’éditeur de votre choix, puis commitez le merge
Si vous avez bien mis à jour le composer.json, lancer un composer update
composer update
Si certaine version dans le composer.json ne sont plus compatible, supprimer la ligne dans le composer et lancer la commande suivante sans spécifier la version
composer require laravel/ui composer require yajra/laravel-datatables
ATTENTION: avec cette méthode, j’ai l’impression qu’on récupère tout l’historique des commits de laravel
Donc, une fois que toutes les modifs sont faites, Copier/coller tous vos fichiers dans une nouvelle branche de votre projet tout propre (en excluant le dossier .git)
# se mettre dans votre projet laravel 6 propre git checkout -b laravel8 # copier tous les fichiers de votre projet upgradé sur la nouvelle branche de votre projet actuel rsync -a --exclude '.git' /projet_migré_en_laravel8/ /projet/ # pouvez maintenant faire un commit de toutes les modifs de votre projet # il se peut que le dossier vendor soit tout pourri rm -fr vendor composer install
Penser à mettre à jour nodejs et npm
Même manip qu’au dessus mais en utilisant l’option depth
Quelques modifs à noter
// La table user, ajouter un champ $table->timestamp('email_verified_at')->nullable(); // la table password_resets, le champ created_at peut-être maintenant NULL // voir aussi la table failed-job
Exemple des fichiers modifiés entre la version 6.x et 8.x de laravel
combiner du less avec du css. L’option processCssUrls peut être utile dans le cas des fichiers de fonts
mix.less('resources/assets/less/bootstrap.less', 'public/css/bootstrap.css') .options({ processCssUrls: false }); mix.styles([ 'public/css/bootstrap.css', 'resources/assets/css/font-awesome.min.css', ], 'public/css/app.css');
combiner les js
mix.scripts([ 'resources/assets/js/jquery.min.js', 'resources/assets/js/bootstrap.min.js', ], 'public/js/app.js');
Puis versionner le tout
mix.version([ 'public/css/app.css', 'public/js/app.js' ],'public/build');
Utiliser maintenant le helper mix() à la place de elixir()
Après avoir galérer pour passer de elixir à laravel mix, nous voici avec Vite …. Heureusement, on peut toujours garder laravel mix en gardant notre fichier packages.json intact
https://github.com/laravel/vite-plugin/blob/main/UPGRADE.md#migrating-from-vite-to-laravel-mix