我找到了几个相关的帖子,但那些并没有真正回答我的问题.假设我想安装此软件包: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": "*",
}
}
Run Code Online (Sandbox Code Playgroud)
所以我需要在没有.git目录的情况下进行安装,因此它不会被视为我项目中的子模块.如何像其他人说的那样下载"dist"版本?我必须标记提交吗?
Sve*_*ven 17
如果将包视为git子模块,则不会将该vendor
文件夹排除在提交到您自己的存储库之外.建议将vendor文件夹添加到.gitignore
(而不是提交这些文件),只提交composer.lock
(composer.json
当然).
除此之外,跑步composer install --prefer-dist
应该做的工作.请注意,如果您稍后改变主意,Composer似乎不会更改先使用的下载方法.如果Composer检测到克隆的repo,则更新它而不是下载ZIP并解压缩它会更快.如果要更改它,请删除整个vendor
文件夹并运行composer update --prefer-dist
.
使用--prefer-dist是唯一的本机解决方案,但是在某些情况下,根本没有可用的打包版本,在这种情况下,Composer仍然会退回到git克隆。
我知道的唯一解决方法是在composer安装后运行删除Git目录的清理脚本。也许是这样的命令:
find . -type d | grep .git | xargs rm -rf
Run Code Online (Sandbox Code Playgroud)
请小心在供应商目录(而不是根目录)中运行此文件。