【问题标题】:Composer fails to load fork from packageComposer 无法从包中加载 fork
【发布时间】:2015-02-22 16:55:03
【问题描述】:

我很难用 composer 为一个包加载一个 fork。 我正在尝试将 Laravel 5 的 Swagger 包 Swaggervel 集成到我的项目中。当前的 dev-master 有一个 bug 导致与 laravel 5 不兼容。

但是在 github https://github.com/mvpasarel/swagger-laravel 上有一个 fork 可以解决这个问题。

这就是我试图指向我的 composer.json 文件中的分叉的方式。

"repositories": [
{
  "type": "vcs",
  "url": "https://github.com/mvpasarel/swagger-laravel"
}],

"require": {
    "laravel/framework": "5.0.*",
    "phpunit/phpunit": "~4.5",
    "jlapp/swaggervel": "dev-master"
}, ...

我阅读了不同社区的许多帖子,以了解如何实现我想要的。这是迄今为止我最好的镜头,但不幸的是,在我的供应商/项目/文件夹中,我仍然看到来自 jlapp/swaggervel 的“旧源”,而不是来自 mvpasarel/swagger-laravel 的更新源。

只是为了完成这里是我的 composer.lock 的一部分

{
        "name": "jlapp/swaggervel",
        "version": "dev-master",
        "source": {
            "type": "git",
            "url": "https://github.com/mvpasarel/swagger-laravel.git",
            "reference": "6e75f294ffa65823247e1f9f9f88402a75aa14f5"
        },
        "dist": {
            "type": "zip",
            "url": "https://api.github.com/repos/mvpasarel/swagger-laravel/zipball/6e75f294ffa65823247e1f9f9f88402a75aa14f5",
            "reference": "6e75f294ffa65823247e1f9f9f88402a75aa14f5",
            "shasum": ""
        },
        "require": {
            "php": ">=5.3.0",
            "zircote/swagger-php": "*"
        },
        "type": "library",
        "autoload": {
            "psr-0": {
                "Jlapp\\Swaggervel": "src/"
            }
        },
        "license": [
            "MIT"
        ],
        "authors": [
            {
                "name": "jlapp",
                "email": "jordan@jordanlapp.com"
            }
        ],
        "description": "A great way to integrate Swagger into Laravel",
        "keywords": [
            "laravel",
            "swagger"
        ],
        "support": {
            "source": "https://github.com/mvpasarel/swagger-laravel/tree/master"
        },
        "time": "2014-11-20 21:43:03"
    },

知道我做错了什么吗?谢谢!

【问题讨论】:

  • 你试过删除lock文件、installed.json文件、包目录然后更新吗?
  • 是的,我试过好几次了。它不起作用。它只会加载原始源而不是源。我也跟进on this article,但没有解决方案。

标签: php github composer-php swagger


【解决方案1】:

这里是你应该如何加载一个叉子:

composer.json:

{   
  "repositories": [
    {
      "type": "git",
      "url": "git@github.com:mvpasarel/swagger-laravel.git"
    }   
   ],    
   "require": {
    "laravel/framework": "5.0.*",
    "jlapp/swaggervel": "dev-laravel5"   
   }
}

您必须添加分支的存储库"url": "git@github.com:mvpasarel/swagger-laravel.git" 并保留原始包的名称,但在要加载的分支上添加"dev-" + 分支的名称,在这种情况下:"jlapp/swaggervel": "dev-laravel5"

这就是我的使用方法,如果它适合你,请告诉我。

【讨论】:

  • 谢谢 mvpasarel!有效。我可以包括叉子。不幸的是,我无法运行 php artisan config:publish jlapp/swaggervel。 “config:publish”是一个未知的方法,我在 docs 文件夹中的 swagger.json 没有被创建。知道为什么吗?
  • 在 Laravel 5 中,命令 config:publishvendor:publish 取代。你应该运行php artisan vendor:publish --provider="path/to/SwaggervelServiceProvider"
  • 好的,这行得通。但是没有创建 JSON 文件。对于我得到的路由 /docs 和 NotFoundHttpException,说 /storage/docs/api-docs.json 不存在,实际上它不存在。为什么它没有被创建?我错过了什么吗?存储文件夹是可写的。
  • 对我来说效果很好。我认为是与 Laravel 或其他东西有关的问题。这就是我的想法:1)您是否添加了:'Jlapp\Swaggervel\SwaggervelServiceProvider',到config/app.php:providers 的末尾2)如果您运行php artisan route:list,您会看到什么?有什么与docs/{page?}api-docs 相关的吗?
  • 让我们把它移到私人空间,在 Skype 上加我:woazala。我会通过包配置和你一起去,好吗?
猜你喜欢
  • 2018-01-04
  • 1970-01-01
  • 2015-06-02
  • 2016-08-13
  • 1970-01-01
  • 2015-08-23
  • 2020-12-30
  • 2018-02-20
  • 2015-08-17
相关资源
最近更新 更多