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

Oti*_*ght 5 install path 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"]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我运行composer install时,它会全部安装,但默认为vendor / aheinze / cockpit,我一生都无法弄清楚原因。

做完我的研究后,这应该是正确的代码……是否有明显的错误?

干杯。

Pᴇʜ*_*Pᴇʜ 6

如果您想使用installer-paths要安装在不同路径中的软件包必须需要的选项composer/installers

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

查看自定义路径的作曲家文档,您会发现它告诉您:

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

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


小智 6

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

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

作曲家自定义目录安装程序

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

这不是另一个composer-installer支持非 Composer 包类型的库,即application.. 等。这只是为了增加在供应商文件夹之外安装 Composer 包的灵活性。这个包只支持composer包类型,

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

包的类型。它默认为库。

包类型用于自定义安装逻辑。如果你有一个需要一些特殊逻辑的包,你可以定义一个自定义类型。这可能是一个 symfony-bundle,一个 wordpress-plugin 或一个 Typ3-module。这些类型都特定于某些项目,并且它们需要提供能够安装该类型包的安装程序。

如何使用

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

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

  • 作为添加的新功能,我们在定义与 相同的下载目录方面增加了更大的灵活性,composer/installers换句话说,您可以在您的部分中使用{$vendor}和 之类的变量:{$name}installer-path
"extra": {
    "installer-paths": {
        "./customlibs/{$vendor}/db/{$name}": ["doctrine/orm"]
    }
}
Run Code Online (Sandbox Code Playgroud)

以上将设法将doctrine/orm软件包安装在项目的根文件夹中,在customlibs.

笔记

type: project此安装程序不支持Composer ,因为具有类型的包project仅适用于与symfony/framework-standard-edition其他包需要的应用程序 shell 一起使用。