2014-09-22 80 views
12

我发现了一些相关的帖子,但那些并没有真正回答我的问题。 比方说,我要安装该软件包: https://github.com/pear/Net_Socket如何使作曲家不创建一个包的.git目录

从我composer.json的摘录:

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

所以我需要它到没有.git目录所以它是没有看到安装作为我项目中的子模块。 与其他人一样,我如何使它下载“dist”版本?我必须标记提交吗?

回答

10

如果一个包被看作是一个git子模块,您还没有将vendor文件夹排除在提交给您自己的存储库的位置。建议将供应商文件夹添加到.gitignore,而不是提交这些文件,只提交composer.lock(当然还有composer.json)。

除此之外,运行composer install --prefer-dist应该做的工作。请注意,如果稍后改变主意,Composer似乎不会更改首先使用的下载方法。如果Composer检测到克隆的repo,只需更新即可,而不是下载ZIP并将其解压缩。如果你想改变它,删除整个vendor文件夹并运行composer update --prefer-dist

1

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

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

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

请小心在供应商目录中运行此操作,而不是根目录。

+0

稍微简单一点,通过指定“vendor”目录也更安全:'find vendor -type d -name \ .git -exec rm -rf \ {\} \;' – JasonGabler 2017-09-19 01:07:31

相关问题