3

我需要在我的 ddev 项目上运行 composer,但我的 Windows 机器上没有它。例如,该项目需要一个composer install在启动之前。如何在这种环境中使用作曲家,尤其是在 Windows 上?

4

2 回答 2

4

更新 2018-11-15 以显示本机 ddev 支持(ddev composer 命令)

有几种方法可以为您的项目运行 composer。

  1. ddev v1.4.0 现在有ddev composerandddev composer create命令。这些在容器内运行作曲家,因此您可以保证获得与容器内托管环境相匹配的作曲家行为。(这对 Windows 用户最重要。)
    • ddev composer require swiftmailer/swiftmailer
    • ddev composer update
    • ddev composer install
    • ddev composer create drupal-composer/drupal-project:8.x-dev --stability dev

请注意,这ddev composer create并不完全相同composer create-project因此您不必了解底层文件系统的复杂性。文档中有drupalTYPO3 ddev composer create示例。

这里没有什么可以阻止您使用任何您熟悉的作曲家技术,但这是获得可预测的 on-linux 容器内作曲家构建的好方法。对于使用 Windows 操作系统的人来说,这应该是非常重要的,因为在 Windows 操作系统中,composer 不太可用并且有一些不可预测的行为。

  1. 以老式方式安装在主机上:如果您的计算机/主机上安装了 composer ,只需composer install. 但是,这只适用于 macOS 和 Linux,并且只有在您拥有正确版本的 php 相关组件时才有效。它在 Windows (NTFS) 上根本无法正常工作,因为作曲家创建的符号链接与 (Linux) Web 容器内的使用不兼容。(在 Windows 上安装 Composer 并不难:使用Chocolateychoco install -y composer. 您需要在 c:\tools\php72\php.ini 中启用 gd 和 curl 扩展)

  2. 所有正常的作曲家行为始终安装在您的 Web 容器中,因此无论您的主机上是否有作曲家,您都可以使用它。例如:ddev exec composer install -d /var/www/html将在存储库的根目录中执行 composer install,与ddev composer install. 您也可以ddev ssh在容器中的命令行上做和操作。

  3. 每次项目启动时,尝试使用这种钩子方法在容器内(在已安装的分区上)运行 composer install :
    hooks:
      post-start:
      - exec: composer install -d /var/www/html

有关作曲家模式的一些较早的想法(大部分已被 废弃ddev composer,请参阅

于 2018-04-04T20:43:04.413 回答
0

为了扩展已接受的答案,DDEV 现在有一个特定于作曲家的钩子

hooks:
  post-start:
  - composer: install -d /var/www/html

我假设使用 this 而不是 的原因exec是还有pre-composerpost-composer钩子,所以也许这也会执行那些钩子。不过,我不确定那或实际的区别。

于 2021-03-16T18:32:59.913 回答