Composer:更新使用“create-project”创建的项目

Posted

技术标签:

【中文标题】Composer:更新使用“create-project”创建的项目【英文标题】:Composer: Updating a Project Created with `create-project` 【发布时间】:2016-07-23 09:46:28 【问题描述】:

composer 是否提供了一种方法来更新创建项目时使用的包?即,如果我使用以下内容创建一个新的 laravel 项目

composer create-project --prefer-dist laravel/laravel blog

Composer 将获取最新版本的laravel/laravel 包,将其解压缩到博客文件夹中,然后从blog 文件夹中运行composer install

我想/需要知道的是,composer 是否为我提供了一种方法来更新下载到 blog 文件夹的 laravel/laravel 包?我知道我可以自己在blog 文件夹中运行composer update,但这将更新compser.jsonrequire 属性中列出的内容——它不会更新未归档的@987654331 @ in blog(或者会吗?)

【问题讨论】:

你只能在 blog 文件夹中使用命令composer update laravel/laravel 更新 laravel 模块 @Matteo 不幸的是它不起作用> composer update laravel/laravelPackage "laravel/laravel" listed for update is not installed. Ignoring. 【参考方案1】:

据我所知这是不可能的。

假设您创建了一个新的示例 Laravel 项目。

composer create-project 使用您的配置等中的所有初始路由创建骨架。

从您开始更改默认路由、删除默认控制器和更改默认视图的第一刻起,您的项目就会不同步。因为与此同时,laravel 将骨架更改为具有一些新默认路由等的较新版本或事件更改目录结构。

在您现有的应用程序中合并这些更改真的很困难。

更好的解决方案是遵循“升级指南”(laravel:https://laravel.com/docs/5.4/upgrade),然后将这些更改提交到您自己的项目中。

【讨论】:

【参考方案2】:

如果您想升级到新的 laravel 版本,您可以随时按照特定版本的升级指南进行操作:

Laravel 5.8 to 6.0 Laravel 5.7 to 5.8 Laravel 5.6 to 5.7 Laravel 5.5 to 5.6

如果您落后多个版本,则需要应用之前的升级指南。因此,如果您在5.6 上并想升级到5.8,则需要按照5.65.7 的指南,然后从5.75.8

这些指南非常有帮助:它们告诉您必须将哪个软件包更新到哪个版本,并告知您将在即将发布的版本中删除的已弃用方法。


您可以用来升级到新的次要版本的另一种方法是查看一个 laravel 版本与下一个版本之间的差异。这样,您就可以看到究竟发生了什么变化以及哪些文件是新的(例如配置文件,您可以按照默认的composer create-project 命令将其复制并粘贴到您的项目中)。

至于当前版本,您可以在此处查看自上次发布以来的提交:v5.8.30 to 5.8

在版本标题的正下方,有一个标有“36 commits to 5.8 since this release”的小链接,它将带您到上面的链接,仅用于最新版本。 p>

【讨论】:

【参考方案3】:

这不是 composer 的目标,它只是管理你的包。 您应该看到composer create-project 只是git clone + composer install 的快捷方式。如果您需要部署您的应用程序,您有多种选择,从简单的git pull 到更高级的部署工具,如 Capistrano。但作曲家不是这些工具之一。

【讨论】:

您是在说“不,composer 不支持”还是“我不知道 composer 是否支持,但您做错了”? “不,作曲家不这样做。”您无需使用 composer 部署您的应用程序,仅此而已。 确定,还是只是根据您认为作曲家的目标进行推测?如果你确定——怎么做? 好吧,我不是作曲家的贡献者,如果你想知道的话。如果您想要第二个意见,请等待另一个答案,这是我一直在做的事情。【参考方案4】:

我只需要这样做,我找不到比git clonegit pull (作为@Federkun)更简单的东西了。也许另一种选择是为项目发布一个phar 文件并下载它? 我可以看到db-ping 这样做。它基于joomla/using phar。 Here 是构建的主文件,灵感来自joomla's file。

【讨论】:

以上是关于Composer:更新使用“create-project”创建的项目的主要内容,如果未能解决你的问题,请参考以下文章

Composer/Laravel:如何添加/更新特定的包

使用composer更新thinkphp5或则yii2的版本

Composer 安装/更新停止工作

如果我不想更新作曲家怎么办,我只想使用 composer.json 和 composer.lock 中的内容

Composer 使用 OR 运算符更新包到特定版本

使用 composer 下载更新卸载类库