2014-09-22 113 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

相關問題