Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用symlinked composer包进行开发,但从vcs存储库进行构建?_Php_Git_Composer Php - Fatal编程技术网

Php 如何使用symlinked composer包进行开发,但从vcs存储库进行构建?

Php 如何使用symlinked composer包进行开发,但从vcs存储库进行构建?,php,git,composer-php,Php,Git,Composer Php,在重构遗留代码时,我尝试使用composer包,同时使用使用此包的项目 Composer允许我添加本地路径存储库,用于检索开发中的包,并将其添加到我的项目中 <composer.json excerpt> "repositories": [ { "type": "path", "url": "../my-package/", "options": { "symlink": true }

在重构遗留代码时,我尝试使用composer包,同时使用使用此包的项目

Composer允许我添加本地路径存储库,用于检索开发中的包,并将其添加到我的项目中

<composer.json excerpt>
"repositories": [
    {
        "type": "path",
        "url": "../my-package/",
        "options": {
            "symlink": true
        }
    }
],

...
"require": {
    "my/package": "@dev"
}
这些符号链接很好。但是,在CI服务器上构建项目时,我希望项目从远程git存储库检索包,这就是为什么我将vcs部分添加到我的
composer.json

    {
        "type": "vcs",
        "url":  "git@bitbucket.org:my/package.git"
    }
但是,在通过
composer install
构建过程中,它仍会尝试在本地检索包,这在CI服务器上当然不可用。我猜是因为我的
composer.lock
明确地说包是从路径检索的。 如何使其在本地和CI服务器上顺利工作?我似乎缺少一个像样的工作流程

到目前为止,我尝试的是:

  • 再次添加
    my/package
    作为开发包,但显然composer.json将自动从无开发包中删除if。另外,我不知道如何告诉composer使用path存储库满足开发需求,使用vcs存储库满足无开发需求

    • 在花了好几个小时寻找合适的工作流程后,我找到了一个。希望它能帮助你

      因为repository dev(比如repository的require dev)不存在,而且很快也不会存在(请参阅),所以我们需要创建两个
      composer.json
      文件。假设我们调用第二个
      composer-dev.json
      。我认为你应该把这两个都写下来,并且都是最新的。要告诉composer使用
      composer-dev.json
      ,您需要在每个composer命令前面放置
      composer=composer-dev.json
      。要进行说明,请参见以下内容:

      composer.json

      {
      “存储库”:[
      {
      “类型”:“vcs”,
      url:“{repo}”
      }
      ],
      “要求”:{
      “供应商/包”:“{version}”,
      }
      }
      
      composer-dev.json

      {
      “存储库”:[
      {
      “类型”:“路径”,
      “url”:“路径/到/您的/包”,
      “选择”:{
      “符号链接”:正确
      }
      }
      ],
      “要求”:{
      “供应商/包”:“{version}”,
      }
      }
      
      如您所见,
      composer.json
      包含“vcs”存储库,
      composer-dev.json
      包含“路径”存储库

      要初始化应用程序并开始开发,请执行以下操作:
      COMPOSER=COMPOSER-dev.json编写器更新
      
      Composer创建了供应商目录,并将软件包文件夹符号链接到
      vendor/package
      。它还创建了一个
      composer-dev.lock
      文件,您应该提交该文件进行部署

      要安装新软件包,请执行以下操作:
      COMPOSER=COMPOSER-dev.json COMPOSER需要供应商/软件包
      
      请记住,
      composer.json
      必须是最新的,因此必须在其中添加所有新行

      要构建应用程序,请执行以下操作:
      COMPOSER=COMPOSER-dev.json COMPOSER安装
      
      这应该会让你:

      [RuntimeException]
      Source path "path/to/your/package" is not found for package vendor/package
      
      现在您可以运行:

      composer更新--没有开发供应商/软件包
      
      或者,如果您需要特定版本:

      composer更新--没有开发供应商/包:{version}
      
      请注意,最后一个命令前面没有
      COMPOSER=COMPOSER-dev.json
      ,因为我们正在使用
      COMPOSER.json
      来使用vcs存储库。最后一个命令还将安装所有缺少的软件包


      我希望它是有用的

      我花了好几个小时寻找合适的工作流,终于找到了一个。希望它能帮助你

      因为repository dev(比如repository的require dev)不存在,而且很快也不会存在(请参阅),所以我们需要创建两个
      composer.json
      文件。假设我们调用第二个
      composer-dev.json
      。我认为你应该把这两个都写下来,并且都是最新的。要告诉composer使用
      composer-dev.json
      ,您需要在每个composer命令前面放置
      composer=composer-dev.json
      。要进行说明,请参见以下内容:

      composer.json

      {
      “存储库”:[
      {
      “类型”:“vcs”,
      url:“{repo}”
      }
      ],
      “要求”:{
      “供应商/包”:“{version}”,
      }
      }
      
      composer-dev.json

      {
      “存储库”:[
      {
      “类型”:“路径”,
      “url”:“路径/到/您的/包”,
      “选择”:{
      “符号链接”:正确
      }
      }
      ],
      “要求”:{
      “供应商/包”:“{version}”,
      }
      }
      
      如您所见,
      composer.json
      包含“vcs”存储库,
      composer-dev.json
      包含“路径”存储库

      要初始化应用程序并开始开发,请执行以下操作:
      COMPOSER=COMPOSER-dev.json编写器更新
      
      Composer创建了供应商目录,并将软件包文件夹符号链接到
      vendor/package
      。它还创建了一个
      composer-dev.lock
      文件,您应该提交该文件进行部署

      要安装新软件包,请执行以下操作:
      COMPOSER=COMPOSER-dev.json COMPOSER需要供应商/软件包
      
      请记住,
      composer.json
      必须是最新的,因此必须在其中添加所有新行

      要构建应用程序,请执行以下操作:
      COMPOSER=COMPOSER-dev.json COMPOSER安装
      
      这应该会让你:

      [RuntimeException]
      Source path "path/to/your/package" is not found for package vendor/package
      
      现在您可以运行:

      composer更新--没有开发供应商/软件包
      
      或者,如果您需要特定版本:

      composer更新--没有开发供应商/包:{version}
      
      请注意,最后一个命令前面没有
      COMPOSER=COMPOSER-dev.json
      ,因为我们正在使用
      COMPOSER.json
      来使用vcs存储库。最后一个命令还将安装所有缺少的软件包

      我希望它有用