Force Composer更新包

时间:2016-02-26 20:57:14

标签: php laravel composer-php

我开发了一个定制的laravel包并把它放在GitHub上。我把它放在composer.json(下面的代码)中,安装得很好。

我还没有版本信息,因为它仍处于开发阶段。当我对我的包进行更改(在单独的目录中)时,我提交并将更改推送到GitHub存储库。

当我运行“作曲家更新”时,我得到“无需安装或更新”#34;。如果我从供应商目录中删除包并更新,那么我的包是从GitHub仓库安装的,包含最新的更改。

但是我希望能够从repo中提取/强制进行最新的更改,而不是先从我的vendor目录中删除它,因为我对该包有其他依赖,如果我删除它,我会从工匠那里得到错误编译了未定义的类(因为它们是在我删除的供应商包中定义的......)

我的顶级composer.json的相关部分是:

  "repositories": [{
    "type": "package",
    "package": {
      "name": "myrepo/MyExtension",
      "version": "dev-master",
      "source": {
        "url": "https://github.com/myrepo/MyExtension.git",
        "type": "git",
        "reference": "master"
      },
      "autoload": {
        "psr-4": {
          "MyExtension\\": "src/Extensions/"
        }
      }
    }
  ],
  "require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.2.*",
    "myrepo/MyExtension": "dev-master"
  },

2 个答案:

答案 0 :(得分:3)

要更新您的更改,您需要对软件包进行版本控制,但正如您之前所说,您没有对软件包进行版本控制,因此要更新您的更改,您可以转到composer.lock删除软件包条目或使用composer删除包并重新安装。例如

 // composer remove vendor/package && composer require vendor/package
 composer remove zizaco/entrust && composer require zizaco/entrust

答案 1 :(得分:2)

您自己创建了有关您的软件包的所有元数据,这可能使Composer认为数据没有改变。

更简单,可能更有效的方法是简单地指向存储库URL,让Composer从存储库中包含的composer.json文件中查询元数据:

"repositories": [{
    "type": "vcs",
    "url": "https://github.com/myrepo/MyExtension.git"
]}