composer update
和 composer install
有什么区别?
原文由 Dawlatzai Ghousi 发布,翻译遵循 CC BY-SA 4.0 许可协议
composer update
和 composer install
有什么区别?
原文由 Dawlatzai Ghousi 发布,翻译遵循 CC BY-SA 4.0 许可协议
if(composer.lock existed){
installs dependency with EXACT version in composer.lock file
} else {
installs dependency with LATEST version in composer.json
generate the composer.lock file
}
composer update = remove composer.lock -> composer install
为什么我们需要 2 个命令。我认为它可以通过 composer.lock 来解释。
想象一下,我们没有---- 3B2916299AAE9492FFC3686FFCB00C7E composer.lock
和 composer.json
"monolog/monolog": "1.0.*"
"monolog/monolog": "^1.0"
那么,就会有一些情况
composer install
,他们可能有不同的依赖版本。如果我们总是在 composer.json
例如 "monolog/monolog": "1.0.1"
中使用 EXACT 版本怎么办?
我们仍然需要 composer.lock
因为 composer.json
只跟踪你的依赖的主版本,它不能跟踪依赖的依赖版本。
如果依赖项的所有依赖项也使用 EXACT 版本怎么办?
想象一下,您从使用 EXACT 版本的所有依赖项开始,然后您不关心 composer.lock
。但是,几个月后,您添加了一个新依赖项(或更新旧依赖项),并且此依赖项的依赖项不使用 EXACT 版本。那么最好在开头关心 composer.lock
。
除此之外,语义版本优于精确版本。我们可能会在开发过程中多次更新依赖项,并且库通常会进行一些小的更改,例如错误修复。然后更容易升级使用语义版本的依赖项。
原文由 Linh 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答4.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答579 阅读✓ 已解决
789 阅读
作曲家更新
composer update
将更新您在composer.json
中指定的依赖项例如,如果您需要此包作为依赖项:
并且您实际上已经安装了
0.9.1
版本的软件包,运行composer update
将导致该软件包的升级(例如到0.9.2
已经发布,如果它’ )详细
composer update
将:composer.json
composer.json
中不再需要的已安装包composer.lock
以存储已安装的软件包版本作曲家安装
composer install
不会更新任何东西;它只会安装composer.lock
文件中指定的所有依赖项详细地:
composer.lock
文件是否存在(如果不存在,它将运行composer update
并创建它)composer.lock
文件composer.lock
文件中指定的包何时安装和何时更新
composer update
主要用于“开发阶段”,根据我们在composer.json
文件中指定的内容来升级我们的项目包,composer install
主要用于“部署阶段”,将我们的应用程序安装到生产服务器或测试环境中,使用与 composer update 创建的 composer.lock 文件中存储的相同依赖项。