composer忽略了installer-paths配置

时间:2013-12-05 17:39:13

标签: php cakephp composer-php

我第一次尝试使用CakePHP与作曲家,但我有一些问题。

我有composer.json

{
  "name": "example.com.br",
  "repositories": [
    {
      "type": "pear",
      "url": "http://pear.cakephp.org"
    }
  ],
  "config": {
    "vendor-dir": "Vendor/"
  },
  "require": {
    "php": ">=5.4",
    "pear-cakephp/cakephp": ">=2.4.3",
    "cakephp/debug_kit": "2.2.*",
    "smottt/wideimage": "dev-master"
  },
  "extra": {
    "installer-paths": {
      "app/Plugin/DebugKit": ["cakephp/debug_kit"],
      "app/Vendor/Wideimage": ["smottt/wideimage"]
    }
  }  
}

当我运行composer install (or update) --prefer-dist时,除了smottt/wideimage之外,一切正常。

此软件包安装在/Vendor文件夹而不是/app/Vendor,因此忽略了 installer-paths

4 个答案:

答案 0 :(得分:14)

当然,Danack has said是真的: composer-installers 插件只支持选择的包类型列表。

作为回应,我为 composer-installers 插件编写了an extension,它允许"installer-paths"指令处理任意包类型。

在composer.json中只需要oomphinc/composer-installers-extender并添加对任何其他任意包类型的支持:

"extra": {
  "installer-types": ["library"],
  "installer-paths": {
    "special/package/": ["my/package"],
    "path/to/libraries/{$name}/": ["type:library"]
  }
}

对于未指定类型的包,请使用默认类型library

答案 1 :(得分:8)

来自documentation

  

您不能使用它来更改任何包的路径。这只是   适用于需要编写器/安装程序并使用a的程序包   它处理的自定义类型。

您正在安装的packages之一:

{
    "name": "smottt/wideimage",
    "description": "An open-source PHP library for image manipulation. (With namespaces, PHP 5.3+)",
    "homepage": "http://wideimage.sourceforge.net",
    "type": "library",
    "license": ["GPL-2.0","LGPL-2.1"],
    "version": "11.02.19",
    "autoload": {
        "psr-0" : {
          "WideImage" : "lib/"
        }
    }
}

因此,您尝试安装的软件包基本上不支持自定义安装路径。

答案 2 :(得分:4)

使用作曲家的“脚本”选项(仅适用于linux):

"scripts": {
        "post-install-cmd": [
            "php -r \"system('mv '.getcwd().'/Vendor/smottt/wideimage '.getcwd().'/Vendor/Wideimage');\""
        ]
    }

答案 3 :(得分:0)

将您的自定义类型添加到 return;

installer-types

https://packagist.org/packages/oomphinc/composer-installers-extender