自定义Laravel包rah1595/laravel-drag-menu安装失败求助
问题描述
我Fork了Laravel拖拽菜单构建包efectn/laravel-menu-builder,为兼容Laravel 10修改了composer.json中的包名为rah1595/laravel-drag-menu,但尝试安装时遇到以下报错:
报错1
执行命令 composer require rah1595/laravel-drag-menu 时:
In PackageDiscoveryTrait.php line 368: Could not find a matching version of package rah1595/laravel-drag-menu. Check the package spelling, your version co nstraint and that the package is available in a stability which matches your minimum-stability (dev).
报错2
执行命令 composer require rah1595/laravel-drag-menu:dev-master 时:
Your requirements could not be resolved to an installable set of packages. Problem 1 - Root composer.json requires rah1595/laravel-drag-menu, it could not be found in any version, there may be a typo in the package name. Potential causes: - A typo in the package name - The package is not available in a stable-enough version according to your minimum-stability setting - It's a private package and you forgot to add a custom repository to find it Installation failed, reverting ./composer.json and ./composer.lock to their original content.
我的包的composer.json内容:
{ "name": "rah1595/laravel-drag-menu", "description": "Wordpress like drag & drop menu builder for Laravel", "keywords": ["Laravel", "Menu", "Wordpress", "Builder", "Drag and Drop"], "authors": [ { "name": "Rah", "email": "rah38951@gmail.com", "role": "Maintainer" }, { "name": "Muhammed Efe Çetin", "email": "efectn@protonmail.com", "homepage": "https://6tel.net", "role": "Maintainer" }, { "name": "Rendy Harimayco", "email": "rendyharimayco@gmail.com", "role": "Original Developer" }, { "name": "Cristian Garcia", "email": "informacion@cristiangarcia.co", "role": "Original Developer" } ], "require": { "php": "^8.1", "illuminate/support": "^5.5|^6.0|^7.0|^8.0|^9.0|^10.0", "vendor/package": "1.1.1" }, "autoload": { "psr-4": { "Efectn\\Menu\\": "src/" } }, "extra": { "laravel": { "providers": [ "Efectn\\Menu\\MenuServiceProvider" ], "aliases": { "Efectn": "Efectn\\Menu\\Facades\\Menu" } } }, "repositories": [ { "type": "vcs", "url": "https://github.com/rah1595/laravel-drag-menu" } ], "minimum-stability": "dev", "prefer-stable": true }
我的GitHub仓库地址是rah1595/laravel-drag-menu,希望能像常规Laravel包一样正常安装。
解决方案
1. 修复包的composer.json问题
- 删除无效依赖项:你的包配置里有个不存在的依赖
"vendor/package": "1.1.1",这会导致Composer无法解析依赖,直接删掉这一行。 - 移除仓库配置:不要把自定义仓库写在包自身的
composer.json中,仓库配置应该放在要安装该包的Laravel项目的composer.json里。
2. 给仓库打版本标签(推荐)
如果想让Composer识别稳定版本,给你的GitHub仓库打一个语义化版本标签(比如v1.0.0),这样后续安装可以不用指定dev-master版本。
3. 项目端配置与安装
步骤1:修改目标项目的composer.json
在你要安装该包的Laravel项目中,添加自定义仓库和稳定性配置:
"repositories": [ { "type": "vcs", "url": "https://github.com/rah1595/laravel-drag-menu" } ], "minimum-stability": "dev", "prefer-stable": true
步骤2:执行安装命令
- 如果已经打了版本标签,直接执行:
composer require rah1595/laravel-drag-menu - 如果未打标签,指定开发版本安装:
composer require rah1595/laravel-drag-menu:dev-master
4. 可选:发布到Packagist
如果希望其他用户无需添加自定义仓库就能安装你的包,可以将GitHub仓库提交到Packagist,这样Composer就能直接从官方源拉取你的包。
内容的提问来源于stack exchange,提问作者Wilz
相关产品推荐
相关产品推荐

