如何更新 Laravel 应用程序(不是作曲家依赖项)
How to update Laravel Application (not the composer dependencies)
我对 Laravel 应用程序的框架更新有疑问。
通常我运行 composer update
命令更新它的所有依赖项。对于 laravel 框架,使用包 laravel/framework。
但是他们在这个包中做了一些更改,需要您在核心应用程序中进行更改(而不是在 composer 中)。核心应用程序是包 laravel/laravel.
例如,在 this commit 中,他们创建了一个名为 confirmPassword()
的函数,它引用包 laravel/laravel
中的文件 ConfirmPasswordController.php
。
但是这个文件在我的应用程序中并不存在,因为我的应用程序不是最新的。
我的问题
我如何使我的核心应用程序保持最新?
错误
请参阅更新依赖项但不更新应用程序的典型示例 。
您可以按照您要升级的版本 from/to 的升级指南手动执行此操作,例如 this one。
或者,Laravel Shift 是一种付费但相当便宜的工具,可以自动为您完成。由于它正在对您的项目进行更改,因此您应该仔细检查它所做的一切。
首先...这不是一个简单的问题,IMO 有许多 种可能的情况...取决于您开发的代码、您使用的包, 你要使用的版本等等...
无论如何,在这种情况下我会这样做:
举例来说,我想从版本 X 升级到版本 Z,其中 Z 是 两个主要/次要版本 先于 X
第 1 步
一次执行一次主要/次要发布的后续步骤。一旦我尝试将应用程序从 Laravel 5.4 升级到 5.6,它就完全崩溃了。所以我决定升级到 5.5 并测试一切正常,以防万一,在那个版本上阻塞。幸运的是,当我从 5.5 升级到 5.6 时(代码修复后),我已经设法让一切正常工作。
第 2 步
升级核心框架和插件,检查升级过程中的错误和ofc,检查官方文档是否有任何兼容性问题
第 3 步
Laravel 有它自己的 upgrade guide 应该逐步遵循。只需按照该指南即可解决大量错误。可能有一些插件不提供它,但通常问题与新功能有关......很难说方法,class 或 trait 从一个版本完全改变到另一个版本。
第 4 步
这一步可以省略,但从您提供的示例来看,添加它可能会更好。当有一个新功能需要特定的 class 或特征或任何东西时,最简单的方法是检查错误是由于文件丢失(并且是 "boilerplate" 的一部分)还是有一个不同的性质,是创建一个具有该特定版本的空项目并与 "default" 文件进行比较。
例如,如果您未对 LoginController
进行任何更改,检查新版本是否有任何类型的更新可能是解决方案。
我对 Laravel 应用程序的框架更新有疑问。
通常我运行 composer update
命令更新它的所有依赖项。对于 laravel 框架,使用包 laravel/framework。
但是他们在这个包中做了一些更改,需要您在核心应用程序中进行更改(而不是在 composer 中)。核心应用程序是包 laravel/laravel.
例如,在 this commit 中,他们创建了一个名为 confirmPassword()
的函数,它引用包 laravel/laravel
中的文件 ConfirmPasswordController.php
。
但是这个文件在我的应用程序中并不存在,因为我的应用程序不是最新的。
我的问题
我如何使我的核心应用程序保持最新?
错误
请参阅更新依赖项但不更新应用程序的典型示例
您可以按照您要升级的版本 from/to 的升级指南手动执行此操作,例如 this one。
或者,Laravel Shift 是一种付费但相当便宜的工具,可以自动为您完成。由于它正在对您的项目进行更改,因此您应该仔细检查它所做的一切。
首先...这不是一个简单的问题,IMO 有许多 种可能的情况...取决于您开发的代码、您使用的包, 你要使用的版本等等...
无论如何,在这种情况下我会这样做:
举例来说,我想从版本 X 升级到版本 Z,其中 Z 是 两个主要/次要版本 先于 X
第 1 步
一次执行一次主要/次要发布的后续步骤。一旦我尝试将应用程序从 Laravel 5.4 升级到 5.6,它就完全崩溃了。所以我决定升级到 5.5 并测试一切正常,以防万一,在那个版本上阻塞。幸运的是,当我从 5.5 升级到 5.6 时(代码修复后),我已经设法让一切正常工作。
第 2 步
升级核心框架和插件,检查升级过程中的错误和ofc,检查官方文档是否有任何兼容性问题
第 3 步
Laravel 有它自己的 upgrade guide 应该逐步遵循。只需按照该指南即可解决大量错误。可能有一些插件不提供它,但通常问题与新功能有关......很难说方法,class 或 trait 从一个版本完全改变到另一个版本。
第 4 步
这一步可以省略,但从您提供的示例来看,添加它可能会更好。当有一个新功能需要特定的 class 或特征或任何东西时,最简单的方法是检查错误是由于文件丢失(并且是 "boilerplate" 的一部分)还是有一个不同的性质,是创建一个具有该特定版本的空项目并与 "default" 文件进行比较。
例如,如果您未对 LoginController
进行任何更改,检查新版本是否有任何类型的更新可能是解决方案。