php - 未找到 Composer 自定义私有包
问题描述
我有一个私有的包回购,我正试图在我作为作曲家包工作的公司内部发布。
我用以下composer.json
文件创建了包:
{
"name": "my_team/package_name",
"description": "Package Description",
"homepage": "https://git.company.com/MyTeam/package_name",
"type": "library",
"license": "Proprietary",
"minimum-stability": "stable",
"version": "1.4",
"require": {
"php": ">=7.1.0",
"ext-curl": "*",
"ext-json": "*"
},
"autoload": {
"psr-4": {
"PackageNamespace\\": "src/"
}
}
}
包中的所有路径都是正确的,我在 Enterprise Github Repo 上创建了一个标签和发布,其中包含 v1.4 包的 zip 文件。
我想测试这个包是否有效,所以我创建了一个测试脚本来运行它,它有以下composer.json
文件:
{
"name": "benjam/test",
"repositories": [
{
"type": "package",
"package": {
"name": "my_team/package_name",
"version": "1.4",
"dist": {
"type": "zip",
"url": "https://git.company.com/MyTeam/package_name/archive/v1.4.zip"
}
}
}
],
"require": {
"my_team/package_name": "1.4"
}
}
和一个main.php
包含以下内容的文件:
<?php
require __DIR__ . '/vendor/autoload.php';
$obj = new PackageNamespace\ClassName();
当我尝试运行该文件时,出现以下错误:
PHP Fatal error: Uncaught Error: Class 'PackageNamespace\ClassName' not found in C:\Development\test\main.php:5
Stack trace:
#0 {main}
thrown in C:\Development\test\main.php on line 5
Fatal error: Uncaught Error: Class 'PackageNamespace\ClassName' not found in C:\Development\test\main.php on line 5
Error: Class 'PackageNamespace\ClassName' not found in C:\Development\test\main.php on line 5
Call Stack:
0.2130 353200 1. {main}() C:\Development\test\main.php:0
所以似乎作曲家自动加载器没有看到已安装的包。
我做错了什么?
composer.json
我尝试过的其他测试脚本设置是:
"repositories": [
{
"type": "package",
"package": {
"name": "my_team/package_name",
"version": "1.4",
"source": {
"type": "git",
"url": "https://git.company.com/MyTeam/package_name",
"reference": "origin/master"
}
}
}
],
解决方案
我遇到的问题是 Github 在标记发布时自动生成的 zip 文件在存档的顶层中没有该文件。composer.json
因为 composer 使用该文件中的信息来创建自动加载设置,所以它成功地导入和安装了包,但没有设置自动加载设置。
我已将测试脚本composer.json
文件更改为以下内容,并且可以正常工作:
(请注意,repo 中有一个名为 的标签v1.4
)
{
"name": "benjam/test",
"repositories": [
{
"type": "vcs",
"url": "git@git.company.MyTeam/package_name.git"
}
],
"require": {
"my_team/package_name": "v1.4"
}
}
推荐阅读
- node.js - npm run build 总是返回状态码 0
- jquery - jquery tablesorter + Jquery timepicker + Ajax 调用给我一个重复的条目
在此处复制https://jsfiddle.net/a1fogpbm/ 我正在工作中生成数据,并尝试在每次更改时间时更新表格。一旦我添加了 datetimepicker,当我更改日期时,我就会得到重复,但是当我点击退出
- swift - Swift Scrollview 滚动,以便在键盘出现时按钮位于键盘正上方
- spring - 如何手动创建 OAuth2AuthenticationToken
- javascript - 如何在更改时立即在一组复选框中获取未选中项(并非所有现有未选中项)的值
- javascript - 由于“提升状态”而无法访问事件对象
- sql - 我的 SQL。如何在不复制代码的情况下重用此实例中的代码?
- c++ - 返回 Eigen::Ref 是否合法?
- vue.js - 如何在 Vue.Js 中使用子路径
- c# - 从 System.Diagnostics.Debug 中删除引用