将包安装到自定义目录Composer中

时间:2015-05-01 10:08:51

标签: path install package composer-php

嘿我正在尝试使用composer将软件包安装到自定义的“admin”目录中。

这是我的JSON:

{
  "name": "frontier/installer",
  "description": "The best front end engineer package around",
  "require": {
    "aheinze/cockpit": "*"
  },
  "extra":{
    "installer-paths":{
      "admin": ["aheinze/cockpit"]
    }
  }
}

现在当我运行composer安装时,所有安装都默认为vendor / aheinze / cockpit我不能为我的生活找出原因。

做了我的研究,这应该是正确的代码......任何明显的错误?

干杯。

5 个答案:

答案 0 :(得分:2)

如果您想使用$scope.checkAllContact = function(){ if ($scope.checkAllContact1) { $scope.checkAllContact1 = true; } else { $scope.checkAllContact1 = false; } angular.forEach($scope.contacts, function (item) { item.check = $scope.checkAllContact1; }); } 选项,您希望以不同路径安装的程序包必须需要installer-paths

在您的情况下,composer/installers包不需要aheinze/cockpit,正如您在composer.json at github中看到的那样。

查看composer documentation for custom paths,您会看到它告诉您:

  

注意:您不能使用它来更改任何包的路径。这仅适用于需要composer/installers并使用其处理的自定义类型的包。

这意味着您无法更改此特定包的安装路径。 无论如何,我没有必要将它安装到默认composer/installers文件夹的任何不同目录中。

答案 1 :(得分:2)

我已经实现了这个作曲家插件,可以将软件包安装到用户(自定义)定义的文件夹中,您可以将它包含在您的composer.json中,按照示例告诉我您是否还有其他问题:)

https://github.com/mnsami/composer-custom-directory-installer

作曲家定制目录的安装程序

作曲家插件,用于在vendor文件夹中默认编写器默认安装路径之外的自定义目录中安装不同类型的编写器包。

这不是用于支持非作曲家包类型的另一个composer-installer库,即application ..等。这只是为了增加在vendor文件夹之外安装composer包的灵活性。此程序包仅支持composer程序包类型,

https://getcomposer.org/doc/04-schema.md#type

  

包裹的类型。它默认为库。

     

包类型用于自定义安装逻辑。如果您的软件包需要一些特殊逻辑,则可以定义自定义类型。这可能是symfony-bundle,wordpress-plugin或typo3-module。这些类型都将特定于某些项目,并且需要提供能够安装该类型包的安装程序。

如何使用

  • 将作曲家插件包含在composer.json require部分::
"require":{
    "php": ">=5.3",
    "mnsami/composer-custom-directory-installer": "1.1.*",
    "monolog/monolog": "*"
  }
  • extra部分中,定义要在::
  • 中安装软件包的自定义目录
  "extra":{
    "installer-paths":{
      "./monolog/": ["monolog/monolog"]
    }

通过添加installer-paths部分,您告诉作曲家在您的根目录中的monolog文件夹中安装monolog包。

  • 作为一项新增功能,我们在定义下载目录方面增加了更多灵活性,就像composer/installers一样,换句话说,您可以在{$vendor}{$name}中使用installer-path"extra": { "installer-paths": { "./customlibs/{$vendor}/db/{$name}": ["doctrine/orm"] } } 等变量{1}}部分:
doctrine/orm

以上将设法在customlibs下的项目的根文件夹中安装type: project包。

注意

此安装程序不支持Composer project,因为类型symfony/framework-standard-edition的包仅适用于Arrays.stream(e.getValue()).map(Float::valueOf).toArray(Float[]::new); 之类的应用程序shell,这是另一个程序包所必需的。

答案 2 :(得分:0)

要在同一目录中安装多个软件包,可以遵循以下结构

1-您的路径应为Error in C(1, 3) : object not interpretable as a factor

2-和要移动或安装同一目录的任何软件包的数组

"modules/patched/{$name}"

该软件包或模块也应位于您的require部分。

"extra":{
    "installer-paths": {

        "modules/patched/{$name}": [
            "drupal/signature_field",
            "drupal/eck",
            "drupal/auto_entitylabel"
        ]

    }

答案 3 :(得分:0)

在安装/转储-自动加载后,您可以使用post-autoload-dump脚本复制软件包:

"scripts": {
  "post-autoload-dump": [
    "cp -r vendor/aheinze/cockpit admin"
  ]
},

答案 4 :(得分:0)

如果只需要将所有软件包放在“ admin”目录下,最好的选择是:

{
  "config": {
        "vendor-dir": "admin"
  }
}