如何使作曲家不为包创建.git目录

时间:2014-09-22 18:59:19

标签: git composer-php

我找到了几个相关的帖子,但那些人并没有真正回答我的问题。 我们说我想安装这个包: https://github.com/pear/Net_Socket

摘自我的composer.json:

{
    "config": {
        "preferred-install": "dist"
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/pear/Net_Socket.git"
        }
    ],
    "require": {
        "pear/net_socket": "*",
    }
}

所以我需要在没有.git目录的情况下安装 所以它不被视为我项目中的子模块。 如何下载" dist"版本,像其他人说的那样?我必须标记提交吗?

3 个答案:

答案 0 :(得分:17)

如果某个包被视为git子模块,则您无法将vendor文件夹排除在提交到您自己的存储库之外。建议将供应商文件夹添加到.gitignore,而不提交这些文件,只提交composer.lock(当然还有composer.json)。

除此之外,运行composer install --prefer-dist应该可以胜任。请注意,如果您稍后改变主意,Composer似乎不会更改先使用的下载方法。如果Composer检测到克隆的repo,则更新它而不是下载ZIP并解压缩它会更快。如果要更改,请删除整个vendor文件夹并运行composer update --prefer-dist

答案 1 :(得分:4)

使用--prefer-dist是唯一的本机解决方案,但是有些情况下根本没有可用的打包版本,在这种情况下,Composer仍会回退到git克隆。

我所知道的唯一解决方法是在删除Git目录的composer安装后运行清理脚本。也许是这样的命令:

find . -type d | grep .git | xargs rm -rf

小心在供应商目录中运行它,不是您的根目录

答案 2 :(得分:0)

composer update --prefer-dist可以很好地工作,但仅更改作曲家软件包(composer.json)的默认下载方法可能会更简单:

{
"config": {
    "preferred-install": {
        "*": "dist"
    }
  }
}

https://getcomposer.org/doc/06-config.md#preferred-install