将软件包安装到自定义目录作曲家中



嘿,我试图使用Composer将软件包安装到自定义'admin'目录中。

这是我的JSON:

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

现在,当我运行作曲家安装时,所有的安装都安装了,但默认为供应商/aheinze/Cockpit,我一生都无法弄清楚为什么。

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

欢呼。

我已经实现了此作曲家插件以将软件包安装到用户(自定义)定义的文件夹中,您可以将其包含在composer.json中。)

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

作曲家 - custom-directory-installer

作曲家插件,要在默认作曲家默认安装路径之外安装不同类型的作曲家包装,该插件在vendor文件夹中。

这不是另一个用于支持非组合程序软件包类型的composer-installer库,即application ..等。这只是添加供应商文件夹外安装Composer软件包的灵活性。此软件包仅支持composer软件包类型,

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

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

软件包类型用于自定义安装逻辑。如果您的软件包需要一些特殊的逻辑,则可以定义自定义类型。这可能是Symfony-Bundle,WordPress-Plugin或Typo3模块。这些类型都针对某些项目,并且需要提供能够安装该类型的软件包的安装程序。

如何使用

  • 将作曲家插件包括在您的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零件,您告诉作曲家在root Directory中的monolog文件夹中安装monolog软件包。

  • 作为一个额外的新功能,我们在定义您的下载目录时增加了更大的灵活性,换句话说,您可以在installer-path中使用{$vendor}{$name}之类的变量:
"extra": {
    "installer-paths": {
        "./customlibs/{$vendor}/db/{$name}": ["doctrine/orm"]
    }
}

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

注意

作曲家type: project在此安装程序中不支持CC_17,因为具有project类型的软件包仅与symfony/framework-standard-edition(例如CC_19)一样有意义。

如果要使用 installer-paths选项,要安装在其他路径必须的软件包>请求composer/installers

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

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

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

这意味着您无法更改此特定软件包的安装路径。无论如何,我认为与默认vendor文件夹的任何不同目录都不需要任何必要。

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

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

您可以使用 post-autoload-dump脚本在install/install/dump-autoload之后复制软件包:

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

用于在同一目录中安装多个软件包您可以按照此结构

1-您的路径应该像这个"modules/patched/{$name}"

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

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

包装或模块也应在您的要求部分中。

"require": {
        "composer/installers": "^1.0.24",
        "drupal/auto_entitylabel": "2.x-dev",
        "drupal/signature_field": "^1.0@RC",
        "drupal/eck": "^1.0@alpha",
}

相关内容

  • 没有找到相关文章

最新更新