Php Composer-私人软件包未进入自动加载程序
我已经创建了一个自定义包,它位于我们的GitLab存储库中,下面是它的composer.json:Php Composer-私人软件包未进入自动加载程序,php,composer-php,Php,Composer Php,我已经创建了一个自定义包,它位于我们的GitLab存储库中,下面是它的composer.json: { "name": "TeamScanblox/InternalAPI_Ref", "description": "", "keywords": [ "swagger", "php", "sdk", "api" ], "homepage": "http://swagger.io", "l
{
"name": "TeamScanblox/InternalAPI_Ref",
"description": "",
"keywords": [
"swagger",
"php",
"sdk",
"api"
],
"homepage": "http://swagger.io",
"license": "proprietary",
"authors": [
{
"name": "Swagger and contributors",
"homepage": "https://github.com/swagger-api/swagger-codegen"
}
],
"require": {
"php": ">=5.5",
"ext-curl": "*",
"ext-json": "*",
"ext-mbstring": "*",
"guzzlehttp/guzzle": "^6.2"
},
"require-dev": {
"phpunit/phpunit": "^4.8",
"squizlabs/php_codesniffer": "~2.6",
"friendsofphp/php-cs-fixer": "~2.12"
},
"autoload": {
"psr-4": { "InternalAPI\\Ref\\" : "lib/" }
},
"autoload-dev": {
"psr-4": { "InternalAPI\\Ref\\" : "test/" }
}
}
这是它的文件夹顶级结构:
我将它作为“TeamScanblox/InternalAPI_Ref”:“*”包含在我需要它的顶级项目的composer.json中,问题是它不能通过PSR-4自动解析并包含在该项目中。将其包括在内并发挥作用的唯一方法是在项目的“psr-4”中添加“InternalAPI\Ref\”:“vendor/TeamScanblox/InternalAPI_Ref/lib/”。为什么呢?我做了什么错事/没有做对让它自动加载
我将其包含在项目“composer.json”中,如下所示:
{
"type": "package",
"package": {
"name": "TeamScanblox/InternalAPI_Ref",
"version": "1.0.0",
"type": "package",
"source": {
"url": "git@gitlab.com:TeamScanblox/InternalAPI_Ref.git",
"type": "git",
"reference": "master"
}
}
}
如果通过使用
包
类型将库包含在应用程序中,则必须在包
描述中提及Composer对库的所有了解,包括自动加载和任何其他要求
通常,只有在无法更改代码来源的情况下,才应使用此包。幸运的是,您可以完全控制库的存储库,只需将Composer指向它即可
"repositories": [{
"type": "vcs",
"url": "ssh://git@somewhere/path/repo.git"
}]
使用此示例而不是“type”:“package”
,Composer将联系存储库并读取它的Composer.json
,检测所有依赖项和自动加载,并像任何外部包一样安装它
请注意,您必须添加您使用的每个内部存储库。Composer不遵循库的存储库
指针,它们都必须在应用程序的根Composer.json
中复制