【发布时间】:2018-09-14 13:13:46
【问题描述】:
我需要在我的 ddev 项目上运行 composer,但我的 Windows 机器上没有它。例如,项目在启动前需要composer install。如何在这种环境下使用 composer,尤其是在 Windows 上?
【问题讨论】:
标签: ddev
我需要在我的 ddev 项目上运行 composer,但我的 Windows 机器上没有它。例如,项目在启动前需要composer install。如何在这种环境下使用 composer,尤其是在 Windows 上?
【问题讨论】:
标签: ddev
2018 年 11 月 15 日更新以显示原生 ddev 支持(ddev composer 命令)
有几种方法可以为您的项目运行 composer。
ddev composer 和ddev composer create 命令。这些在容器内运行作曲家,因此您可以保证获得与容器内托管环境相匹配的作曲家行为。 (这对 Windows 用户最重要。)
ddev composer require swiftmailer/swiftmailerddev composer updateddev composer installddev composer create drupal-composer/drupal-project:8.x-dev --stability dev请注意,ddev composer create 与composer create-project 并不完全相同,因此您不必了解底层文件系统的复杂性。文档中有drupal 和TYPO3 ddev composer create 示例。
这里没有什么可以阻止您使用任何您熟悉的作曲家技术,但这是获得可预测的 Linux 容器内作曲家构建的好方法。对于使用 Windows 操作系统的人来说,这应该是非常重要的,因为在 Windows 操作系统中,composer 不太可用并且有一些不可预测的行为。
以老式方式安装在主机上:如果 composer 在您的计算机/主机上是 installed,则只需 composer install。但是,这只适用于 macOS 和 Linux,并且只有在您拥有正确版本的 php 相关组件时才有效。它在 Windows (NTFS) 上根本无法正常工作,因为作曲家创建的符号链接与 (Linux) Web 容器内的使用不兼容。 (在 Windows 上安装 Composer 并不难:使用 chocolatey 和 choco install -y composer。您需要在 c:\tools\php72\php.ini 中启用 gd 和 curl 扩展)
所有正常的 Composer 行为始终安装在您的 Web 容器中,因此无论您的主机上是否有 Composer,您都可以使用它。例如:ddev exec composer install -d /var/www/html 将在存储库的根目录中执行 composer install,与 ddev composer install 完全相同。也可以ddev ssh,在容器内命令行操作。
hooks:
post-start:
- exec: composer install -d /var/www/html
关于作曲家模式的一些较早的想法(大部分已被ddev composer 废弃,请参阅
【讨论】:
为了扩展accepted answer,DDEV 现在有一个composer-specific hook。
hooks:
post-start:
- composer: install -d /var/www/html
我认为使用它而不是exec 的原因是还有pre-composer 和post-composer 钩子,所以也许这也会执行这些钩子。不过,我不确定那或实际的区别。
【讨论】: