Composer不安装本地包依赖项

时间:2017-08-24 20:08:28

标签: laravel composer-php laravel-5.4

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

"autoload": {
    "classmap": [
        "database/seeds",
        "database/factories"
    ],
    "psr-4": {
        "App\\": "app/",
        "Vendor\\Module\\": "packages/vendor/module/src"
    }
},

然后在我的包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包。

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

1 个答案:

答案 0 :(得分:3)

我相信我找到了一个解决方案,虽然它可能不是本地软件包开发的最佳方法,但它对我有用。

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

"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"
    }
},

这个方法的好处是它只为自定义包创建一个符号链接,因此你可以继续在packages目录中写入更新,这些更改将生效,而不是必须提交到本地git存储库,如果你在 composer.json 的存储库字段中将类型设置为 vcs

我还必须在 require-dev 字段中指定版本号,以便它通过版本约束,否则您会收到包裹不警告的警告在运行composer时满足最低版本要求。