我找到了几个相关的帖子,但那些人并没有真正回答我的问题。 我们说我想安装这个包: 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"版本,像其他人说的那样?我必须标记提交吗?
答案 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"
}
}
}