升级你的Symfony项目简单ob娱乐下载的方法
在旧的Symfony ob娱乐下载2.0。x天,当作曲家不存在,一个项目从一个小版本升级Symfony的下一个并不那么容易。ob娱乐下载你必须合并所做出的更改deps
和deps.lock
文件到你的。变化的差异是Symfony本身,而且也从“核心”Symfony包包含ob娱乐下载在标准版。当然,如果你有其他第三方依赖,你必须升级他们自己(找到合适的版本为每个人使用)。它工作得很好即使合并事情有时是一场噩梦,但不幸的是可以安装依赖关系并没有很好地协同工作。
快进到世界的作曲家。
作曲家使用Symfony自2.1版本,但ob娱乐下载是我们最早采用者,因为作曲家和Symfony的生态系统不稳定,还是尴尬。推荐的最小稳定dev
,因此,当你跑作曲家更新
,你有你依赖的最前沿。在某种程度上减少疼痛,我们提供了composer.lock
文件标准版……升级您的项目时,您可以使用。但是再一次,如果你有其他依赖项,合并锁定deps是痛苦。我们基本上是使用作曲家旧deps文件,除了作曲家将确保所有依赖版本一起工作得很好。
快进至2.3 Symfony。ob娱乐下载
Symfonob娱乐下载y 2.3,最低稳定水平已经提高了稳定的
。这是可能的,因为Symfony生态系统作为一个整体更成熟,因ob娱乐下载为几乎所有的好/有用/维护/流行包有稳定版本配置它们的依赖项。如果你知道一个很酷的包或PHP库,仍然需要dev
最低稳定,跟开发人员和说服他来标记一个稳定版本。
因为我们现在使用稳定版本的所有依赖项默认情况下,我们不需要保持在一个composer.lock
文件作为模板。这就是为什么Symfony的标准版两个版本之间的差异可以是空的…ob娱乐下载这是令人不安的但完全好了。
那么,什么是工作流2.3升级你的Symfony项目?ob娱乐下载这相当简单,如此简单,一些开发人员丢失!让我解释Symfony 2.3 +的升级工作流程:ob娱乐下载
1
美元作曲家更新
这就是所有。不需要做其他事情。当然,由此产生composer.lock
文件应存放在您的项目存储库以便所有开发人员处理你的项目将安装相同版本的项目依赖关系。
请注意,这里没有相关Symfony。ob娱乐下载所以,从一个Symfony的小版本升级到下一个比其他任何依赖项升级没有什么不同。ob娱乐下载
你不需要跟踪更改或升级。因为Symfony 2.ob娱乐下载3是一个长期支持释放强大的“不要打破向后兼容性”的座右铭,您可以运行作曲家更新
有信心。ob娱乐下载Symfony项目只是另一种依赖的,像任何其他的人。
简短的解释,你可以在这里停止。如果你想了解更多,继续阅读虽然在实践中我告诉你它是如何工作的。
假设您创建了一个新的Symfony tripwire项目上周与以下ob娱乐下载命令:
1
美元作曲家创建项目- n / symfony / tripob娱乐下载wire framework-standard-edition路径
当运行这个命令,创建一个新的作曲家路径/
目录,下载Symfony tripwire标准版版本。ob娱乐下载然后安装中引用的所有依赖项composer.json
文件运行作曲家安装
:
如果安装symfonyob娱乐下载 / framework-standard-edition (2.3.0)-安装ob娱乐下载symfony / framework-standard-edition(v2.3.0)从缓存加载在路径/创建项目加载作曲家与包存储库信息安装依赖项(包括require-dev)-安装jdorn / sql-formatter(v1.2.9)从缓存加载-安装教义/词法分析程序(v1.0)从缓存加载-安装教义/注释(v1.1.1)从缓存加载-安装教义/集合(v1.1)从缓存加载-安装教义/缓存(v1.0)从缓存加载-安装教义/弯曲物(v1.0)从缓存加载-安装教义/常见(2.4.0-RC3)从缓存加载-安装教义/ dbal(2.3.4)从缓存加载-安装psr /日志(1.0.0)从缓存加载-安装树枝/树枝(v1.13.1)从缓存加载-安装ob娱乐下载symfony / icu(v1.2.0)从缓存加载-安装ob娱乐下载symfony / symfony(v2.3.0)从缓存加载-安装教义/ doctrine-bundle(v1.2.0)从缓存加载-安装树枝/扩展(v1.0.0)从缓存加载-安装kriswallsmith / assetic(v1.1.1)从缓存加载-安装ob娱乐下载symfony / assetic-bundle(v2.3.0)从缓存加载-安装swiftmailer / swiftmailer(v5.0.0)从缓存加载-安装ob娱乐下载symfony / swiftmailer-bundle(v2.3.0)从缓存加载-安装独白/独白(1.5.0)从缓存加载-安装ob娱乐下载symfony / monolog-bundle(v2.3.0)从缓存加载-安装sensio赞助/ distribution-bundle(v2.3.0)从缓存加载-安装sensio赞助/ framework-extra-bundle(v2.3.0)从缓存加载-安装sensio赞助/ generator-bundle(v2.3.0)从缓存加载-安装incenteev / composer-parameter-handler(v2.0.0)从缓存加载-安装教义/ orm(2.3.4)从缓存加载跳过安装的bin /学说包原则/ orm:名称与现有文件冲突跳过安装的bin /教义。php包原则/ orm:名称与现有文件冲突kriswallsmith / assetic建议安装leafo lessphp与lessphp (assetic提供了集成编译器)kriswallsmith / assetic建议安装leafo scssphp(与scssphp SCSS assetic提供了集成编译器)kriswallsmith / assetic建议安装ptachoire cssembed (assetic提供了集成phpcssembed嵌入数据uri) kriswallsmith / assetic建议安装leafo scssphp-compass与SCSS罗盘(assetic提供了集成插件)独白/独白表明安装mlehner gelf-php(允许发送日志消息GrayLog2服务器)独白/独白表明安装乌鸦乌鸦(允许发送日志消息到一个哨兵服务器)独白/独白表明安装原则/ couchdb(允许发送日志消息到一个couchdb服务器)独白/独白表明安装ext-amqp(允许发送日志消息一个AMQP服务器(需要1.0 +))独白/独白表明安装ext-mongo(允许向MongoDB服务器发送日志消息)写锁文件生成自动装载文件创建“应用程序/配置/参数。yml文件”。清理缓存的dev环境与调试真正的安装资产使用硬拷贝选择安装资产ob娱乐下载Symfony \包\ FrameworkBundle成web /包/框架安装资产Acme \ DemoBundle成web /包/ acmedemo安装资产Sensio赞助\包\ DistributionBundle成web /包/ sensiodistribution
正如你所看到的在输出中,作曲家tripwire安装Symfony版本,使用相同版本的Symfonyob娱乐下载包作曲家李斯特的文件。
现在升级到Symfony 2.3.1,ob娱乐下载您可以运行下面的命令:
1
美元作曲家更新symfony / sob娱乐下载ymfony
和输出的东西:
加载作曲家与包存储库信息更新的依赖关系(包括require-dev)——删除ob娱乐下载symfony / symfony(v2.3.0)- - -安装ob娱乐下载symfony / symfony(v2.3.1)从缓存加载写锁文件生成自动装载文件更新“应用程序/配置/参数。yml文件”。清理缓存的dev环境与调试真正的安装资产使用硬拷贝选择安装资产ob娱乐下载Symfony \包\ FrameworkBundle成web /包/框架安装资产Acme \ DemoBundle成web /包/ acmedemo安装资产Sensio赞助\包\ DistributionBundle成web /包/ sensiodistribution
正如您可以看到的,作曲家更新了ob娱乐下载symfony / symfony
只包。因为Symfony包配置兼容Symfoob娱乐下载ny的任何版本2.3,所以更新2.3.1并不是必需的。
但是如果我不带任何参数运行update命令:
1
美元作曲家更新
作曲家将更新所有依赖他们的最新稳定版本:
加载作曲家与包存储库信息更新的依赖关系(包括require-dev)——删除ob娱乐下载symfony / symfony(v2.3.0)- - -安装ob娱乐下载symfony / symfony(v2.3.1)从缓存加载-删除ob娱乐下载symfony / swiftmailer-bundle(v2.3.0)- - -安装ob娱乐下载symfony / swiftmailer-bundle(v2.3.1)从缓存加载-删除sensio赞助/ distribution-bundle(v2.3.0)- - -安装sensio赞助/ distribution-bundle(v2.3.1)从缓存加载-删除sensio赞助/ framework-extra-bundle(v2.3.0)- - -安装sensio赞助/ framework-extra-bundle(v2.3.1)从缓存加载-删除sensio赞助/ generator-bundle(v2.3.0)- - -安装sensio赞助/ generator-bundle(v2.3.1)从缓存加载写锁文件生成自动装载文件更新“应用程序/配置/参数。yml文件”。清理缓存的dev环境与调试真正的安装资产使用硬拷贝选择安装资产ob娱乐下载Symfony \包\ FrameworkBundle成web /包/框架安装资产Acme \ DemoBundle成web /包/ acmedemo安装资产Sensio赞助\包\ DistributionBundle成web /包/ sensiodistribution
请注意
实际上,写这篇文章时我被骗了。当你问作曲家tripwire安装Symfony标准版的版本,下载包和运行ob娱乐下载作曲家安装
。但它然后安装Symfony 2.3.1版本而ob娱乐下载不是tripwire,为什么?首先,即使是相同的版本,版本没有关系的Symfony和版本tripwire tripwire标准版。ob娱乐下载它只是发生,我们同步版本为简单起见(我们可能停止在某一时刻)。然后,因为标准版不来的composer.lock
文件,因为我跑这个命令2.3.1版本发布后,由于约束的composer.json
文件是2.3 . *
、作曲家实际上安装Symfony 2.3.1版本,最新的稳定ob娱乐下载版本匹配约束在作曲家文件中。
所以,当您的项目添加一个依赖项(Symfony, Symfony组件,一个Symfony包,或任何其他Pob娱乐下载HP库),你有几个选择:
- 保守,迫使一个特定版本:
“ob娱乐下载symfony / symfony”:“tripwire”
; - 限制,迫使一个范围的版本:
“ob娱乐下载symfony / symfony”:“> = tripwire < 2.4 - dev”
; - 有信心和使用任何未来的稳定版本:
“ob娱乐下载symfony / symfony”:“~ 2.3”
。
最后的选择只建议如果依赖语义版本控制方案和如果你信任的开发人员更新政策(在一个小版本从来没有打破向后兼容性)。
总之,这里是我的黄金法则:
- 使用
稳定的
你的最低稳定水平composer.json
文件(使用@dev
后缀作为后缀如果依赖尚未稳定); - 定义好版本约束你
composer.json
文件(见上面的三种可能的选择); - 运行
作曲家更新
有信心当你想升级你的项目依赖项他们最新的稳定版本。
评论
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
只有我遇到了问题(但没有相关Symfony本身):我有depencendy一个内部开发的ob娱乐下载包本身取决于另一个内部开发的包(a = > B: dev-master@dev = > C: dev-master@dev)。作曲家不是被设计来管理这种依赖性:这添加:
。= > B: dev-master@dev = > C: dev-master
。= > C: @dev(没有版本,只有修饰符)。
很高兴知道你正在与一个私人模块:依赖图)
使用这种约束意味着你更有可能继续使用车版(更糟的是当错误修复版本包含一个安全修复)
关于限制版本,上界
尼古拉。我认为你不能2.3.9-dev 2.3 . * ?
Fabien Potencier is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now