如何通过Composer从供应商/包中仅安装一个目录?或安装后删除目录?

时间:2013-09-23 11:12:41

标签: php yii composer-php

抱歉,我的英语不太好。所以我对作曲家有问题。我可以从包中选择要安装的目录,或者在安装后删除它们。 例如: “yiisoft / yii”这是供应商/包。但我想只安装“yiisoft / yii / framework”目录。我不喜欢保留其他目录。 我仍然觉得什么是解决我问题的最佳解决方案。

2 个答案:

答案 0 :(得分:1)

您不应该破坏供应商目录。有充分的理由在vendors中将它们保持在一起。如果您确实需要从其他路径获得某些文件,请使用符号链接。

有关此主题的更多信息,请阅读Igor Wiedler撰写的关于Composer Vendor Directory的权威博客文章。

或者,您可以使用phing将内容复制到其他地方(和/或删除)。

答案 1 :(得分:0)

使用composer安装软件时,需要安装所有存储库。如果要删除未使用的文件夹,可以使用composer的特定功能。您可以通过以下方式捕获post-install-cmd或post-update-cmd等事件:

{
    "scripts": {
        "post-install-cmd": "Sensorario\\Communityii\\ComposerCommands::postInstall",
        "post-update-cmd": "Sensorario\\Communityii\\ComposerCommands::postUpdate"
    }
}

在您的项目的根文件夹中有composer.json,您还需要添加PSR-0标准的文件:      - composer.json      - src / Sensorario / Communityii / ComposerCommands.php

这个文件可以是这样的:

命名空间Sensorario \ Communityii;

class ComposerCommands
{
    public static function postUpdate()
    {
        // remove unused folders
        shell_exec('rm vendor/yiisoft/yii/demos/ ... ');
    }
}

此代码将在

之后运行
$ composer update