我知道以下情况与现代最佳实践相去甚远,但让我们尝试一下。
让我们假设:
这是多么可能:某些软件包由于操作系统切换而无法工作,并且如果从服务器上的composer json文件安装它们(可以不完全依赖于平台)可以避免失败?
我从这个question知道在安装过程中设置的绝对路径可能是一个问题。还有其他可能的问题吗?
答案 0 :(得分:1)
该可能性很高,因为作曲家根据环境设置的不同而工作。
一个简单的例子是https://getcomposer.org/doc/articles/scripts.md
可以运行依赖于已安装组件的自定义逻辑,并且仅在主机操作系统具有可用的东西时才准备一些东西-该东西与composer.lock无关
核心问题是您想重用供应商文件夹。无法使Composer如此工作,这就是为什么.gitignore文件中经常提到vendor
的原因。
作曲家的行为将因环境而异,其结果不应复制。
如果要使OS-es之间的行为保持一致,请使用Docker或vagrant稳定应用程序及其环境。
答案 1 :(得分:0)
只要您将composer.lock
提交到项目中,它们就应该独立于操作系统。 composer.lock
的重点是通过composer install
独立于操作系统安装相同的软件包,并且Composer本身不使用任何绝对路径(默认情况下)。实际上,作为原因,Composer维护者discourage using it in production和许多问题已因“ Composer不是部署工具”而关闭。因此,通过设计,您应该能够在环境之间移动安装,并且在每个系统上,您将获得composer install
安装的相同软件包。
唯一的问题可能来自scripts和/或plugins,这可能会导致某些不可移植的事情,您需要在目标安装上运行它。
简而言之:是的,安装独立于操作系统(除非您做某些事情,否则它将改变这一情况)。