tighten / novapackages

https://novapackages.com
336 stars 61 forks source link

Laravel 9.x Shift #299

Closed marcusmoore closed 2 years ago

marcusmoore commented 2 years ago

This pull request includes the changes for upgrading to Laravel 9.x. Feel free to commit any additional changes to the shift-73146 branch.

Before merging, you need to:

If you need help with your upgrade, check out the Human Shifts. You may also join the Shifty Coders Slack workspace to level-up your Laravel skills.

marcusmoore commented 2 years ago

:x: Laravel 9 added a ValidateSignature middleware which allows you to ignore certain query parameters. Shift detected your application already contains a ValidateSignature middleware.

You should rename your middleware and add the Laravel 9.x version to your project. If your middleware performs this same logic, you should remove yours and update your code to use Laravel's.

marcusmoore commented 2 years ago

:warning: Laravel 9 upgraded to Flysystem 3.0 causing the behavior of the Storage facade to change slightly:

For more details, you may review the Flysystem 3.x section of the Upgrade Guide.

marcusmoore commented 2 years ago

:warning: Laravel 9 transitioned from SwiftMailer to Symfony Mailer. While this transition should be relatively seamless and Shift automates any tedious changes, there are some changes which are not reliably automated.

Dependencies Some mail providers may require an additional dependency. For example, if you are using Mailgun, then you will need to install the symfony/mailgun-mailer package:

composer require symfony/mailgun-mailer symfony/http-client

For more details on what has changed you may review the Symfony Mailer section of the Upgrade Guide.

marcusmoore commented 2 years ago

:x: Shift could not upgrade the following files since they differed from the default Laravel version. You will need to compare these files against the default Laravel 9 versions and merge any changes:

marcusmoore commented 2 years ago

:warning: The FILESYSTEM_DRIVER environment variable was renamed to FILESYSTEM_DISK in Laravel 9. Shift did not find this variable referenced in your committed files, but you should review any additional environment configuration and rename this variable.

marcusmoore commented 2 years ago

:warning: Shift upgraded your configuration files by defaulting them and merging your true customizations. These include values which are not changeable through core ENV variables.

You should review this commit for additional customizations or opportunities to use new ENV variables. If you have a lot of customizations, you may undo this commit with git revert 93cf6d15 and make the config file changes manually.

marcusmoore commented 2 years ago

:information_source: The FILESYSTEM_CLOUD environment variable was removed in a later release of Laravel 8. While you may still use the cloud disk, you are encouraged to configure your own disks.

marcusmoore commented 2 years ago

:warning: The token driver for API authentication is no longer available. This driver was not very robust and was removed from the documentation. Laravel now recommends using Sanctum.

If you were using the token driver, you may re-add it within your auth.php configuration file then migrate to Sanctum at your convenience.

marcusmoore commented 2 years ago

:information_source: Shift updated your dependencies for Laravel 9. While many of the popular packages are reviewed, you may have to update additional packages in order for your application to be compatible with Laravel 9. Watch dealing with dependencies for tips on handling any Composer issues.

marcusmoore commented 2 years ago

:information_source: Laravel 9 adopted anonymous migrations. Shift automated this change to align with modern Laravel conventions and avoid naming migrations.

marcusmoore commented 2 years ago

:information_source: All of the underlying Symfony components used by Laravel have been upgraded to Symfony 6. If you are directly interacting with any Symfony component, you should review the Symfony change log for additional changes.

marcusmoore commented 2 years ago

:information_source: The HTTP client has been updated to have a default timeout of 30 seconds. Previously there was no default. The underlying request would wait indefinitely. Now an exception is thrown after 30 seconds.

If you find your requests need longer, you may prefix your request to specify a timeout:

Http::timeout(60)->get("https://laravelshift.com");
marcusmoore commented 2 years ago

:information_source: The app/Models folder was reintroduced back in Laravel 8. This was an optional change. Laravel and the artisan commands will automatically detect if you are using the app/Models folder or not.

If you wish to modernize your application to use the app/Models folder, you may run the Namespace Models Shift for free.

marcusmoore commented 2 years ago

:information_source: Laravel 9 now uses Vite to build frontend assets. While you may continue to use Laravel Mix, it is no longer the default. If you wish to modernize your application to use Vite, you may run the Vite Converter for free.

marcusmoore commented 2 years ago

:warning: Shift detected you are using a Laravel package like Horizon or Nova which may need to have its published assets regenerated after upgrading. Be sure to use artisan to republish these assets as well as php artisan view:clear to avoid any errors.

marcusmoore commented 2 years ago

:tada: Congratulations, you're now running the latest version of Laravel!

Next, you may optionally run the following Shifts to ensure your application is fully upgraded, adopts the latest Laravel conventions, and easier to maintain in the future:

You may also use the Shift Workbench to automate common tasks for maintaining your Laravel and PHP applications.

marcusmoore commented 2 years ago

Attempted to get #296 updated with the changes from #291 but this didn't work as I expected.