How does composer.json record --prefer-source

时间:2017-04-09 23:56:42

标签: composer-php

One can add a package from the command line with the --prefer-source option. Surely should result in a change to composer.json? How is this shown? I can't see any difference after using --prefer-source.

1 个答案:

答案 0 :(得分:1)

如果composer.json--prefer-source--prefer-dist文件中没有记录任何差异。唯一的是包本身的名称和版本约束。

差异可能发生在composer.lock内部和vendor文件夹本身。如果已安装软件包,则其状态将反映在它们在vendor文件夹中的显示方式中。如果它们是签出存储库,那么Composer将继续像--prefer-source那样对待它们,这可能会在切换到不同版本时加快某些操作。如果没有存储库,Composer将继续将该文件夹视为--prefer-dist

请注意,sourcedist只有在composer.lock中记录了相应的信息时才有效。如果没有记录dist的下载位置,安装依赖项将导致存储库的检出,反之亦然。如果两个信息都可用,并且其中一个方法失败,则尝试另一个,即如果下载链接失败,则执行结账。

--prefer-source选项实际上只会影响下载和安装本身,而不会影响依赖项的记录方式 - 这是有道理的,因为您可能希望在开发时检出源,但是您没有想要在部署到生产时克隆整个存储库。使用composer install的命令行标志,您可以在将依赖项安装到新的供应商文件夹时随时改变主意,如果安装到现有的供应商文件夹中,则保留以前的选择。