Laravel 编写器未安装本地包依赖项

Laravel 编写器未安装本地包依赖项,laravel,composer-php,laravel-5.4,Laravel,Composer Php,Laravel 5.4,在我的laravel5.4composer.json文件中,我有以下自动加载自定义软件包的内容。请注意,此包未发布,正在本地加载 "autoload": { "classmap": [ "database/seeds", "database/factories" ], "psr-4": { "App\\": "app/", "Vendor\\Module\\": "packages/vendor/module

在我的laravel5.4composer.json文件中,我有以下自动加载自定义软件包的内容。请注意,此包未发布,正在本地加载

"autoload": {
    "classmap": [
        "database/seeds",
        "database/factories"
    ],
    "psr-4": {
        "App\\": "app/",
        "Vendor\\Module\\": "packages/vendor/module/src"
    }
},
然后在我的package composer.json文件中,我有以下内容

{
    "name": "vendor/module",
    "description": "A custom package",
    "version": "1.0.0",
    "type": "project",
    "authors": [
    ],
    "minimum-stability": "dev",
    "require": {
      "laravelcollective/html": "^5.4.0"
    }
}
但是,当我从根Laravel目录运行composer install时,它从来不会获取我需要的laravelcollective/html包


有没有办法将依赖项加载到未发布的本地包中?

我相信我找到了一个解决方案,尽管它可能不是本地包开发的最佳方法,但对我来说是可行的

在root composer.json文件中,我添加了以下内容,并从应用程序的根目录运行composer更新,现在似乎可以提取包及其依赖项,并将所有内容安装到根应用程序的主供应商目录中

"repositories": [
    {
        "type": "path",
        "url": "packages/vendor/module"
    }
],
"require-dev": {
    "fzaninotto/faker": "~1.4",
    "mockery/mockery": "0.9.*",
    "phpunit/phpunit": "~5.7",
    "vendor/module": "1.0.*"
},
"autoload": {
    "classmap": [
        "database/seeds",
        "database/factories"
    ],
    "psr-4": {
        "App\\": "app/",
        "Vendor\\Module\\": "packages/vendor/module/src"
    }
},
这种方法的优点是它只为自定义包创建符号链接,因此,如果在composer.json的repositories字段中将类型设置为vcs,则可以继续在packages目录中写入更新,并且更改将生效,而不必提交到本地git存储库


我还必须在require dev字段中指定版本号,以使其通过版本约束,否则在运行composer时,您将收到一条警告,说明软件包不符合最低版本要求。

您是否尝试过composer update?您是否已经有composer.lock文件?安装composer时,composer.lock文件用于提取依赖项。听起来你需要更新作曲家?事实上,无论何时更改composer.json文件中的任何内容,都需要对composer进行更新。这是正确的,根应用程序已经有了composer.lock文件。我应该删除锁文件并再次运行composer update吗?不,只运行composer update。它将覆盖现有的。然后应该推送新的composer.lock文件,以便将来运行composer安装。因此在我的本地包中仍然看不到所需的依赖项。保存了我的一天。谢谢!