Php 自定义软件包的Composer安装路径

Php 自定义软件包的Composer安装路径,php,wordpress,composer-php,Php,Wordpress,Composer Php,我读过关于这个话题的其他问题,但我似乎无法让它起作用。我正试图下载一个自定义包,安装到wp-content/plugins/cforms。我已经为wpackagist提供的其他软件包,甚至一些内部开发的定制插件提供了这个功能 以下是我所拥有的: { "name": "mycompany/wordpress-install", "description": "Themes and plugins for our wordpress install.", "authors": [

我读过关于这个话题的其他问题,但我似乎无法让它起作用。我正试图下载一个自定义包,安装到
wp-content/plugins/cforms
。我已经为
wpackagist
提供的其他软件包,甚至一些内部开发的定制插件提供了这个功能

以下是我所拥有的:

{
  "name": "mycompany/wordpress-install",
  "description": "Themes and plugins for our wordpress install.",
  "authors": [
    {
        "name": "Me",
        "email": "example@example.net"
    }
  ],
  "require": {
    "deliciousdays/cforms": "14.5.2"
  },
  "repositories": [
    {
      "type": "package",
      "package": {
        "name": "deliciousdays/cforms",
        "version": "14.5.2",
        "dist": {
          "url": "http://www.deliciousdays.com/download/cforms-v14.5.zip",
          "type": "zip"
        }
      }
    }
  ],
  "extra": {
    "installer-paths": {
      "wp-content/plugins/cforms": ["deliciousdays/cforms"]
    }
  }
}

它下载cforms很好,但当我想下载时(显然)
wp-content/plugins/cforms
,它仍然将其放入
vendor/deliciousdays/cforms
。我做错了什么?

在尝试了很多不同的事情后,终于找到了答案。我想我遗漏了两件事:

在包声明中,我将其更改为“type”:“wordpress plugin”,然后在requires中,我必须添加
“Composer/installers”:“~1.0”
,就像这样(还要注意,
额外的
被完全删除):

即使有
composer/installers
require,我仍然无法找到如何将自定义包安装到我选择的目录中。它似乎忽略了所有内容,直到我向对象添加了一个类型,然后它强制它下载到该类型定义的位置,具体取决于如何下载


但我认为这会暂时奏效。。。如果有人知道如何把它下载到,比如说,
“myfolder/something/cforms”
我会接受你的答案。

碰巧我也为你找到了答案,因为我遇到了同样的问题。显然,现在对定制安装软件包的需求很大

composer/installers
仅适用于已定义的框架和CMS,但不适用于普通的composer软件包

我已经实现了这个composer插件,可以将软件包安装到用户(自定义)定义的文件夹中。您只需将其包含在composer.json中,按照下面的示例进行操作,如果您有更多问题,请告诉我:)

composer自定义目录安装程序 composer插件,用于在默认composer默认安装路径(位于
供应商
文件夹中)之外的自定义目录中安装不同类型的composer软件包

这不是另一个支持非composer包类型的
composer安装程序
库,即
应用程序
。。等等。这只是为了增加在供应商文件夹外安装composer软件包的灵活性。此软件包仅支持
composer
软件包类型

包的类型。它默认为library

包类型用于自定义安装逻辑。如果您有一个需要一些特殊逻辑的包,您可以定义一个自定义类型。这可能是一个symfony包、一个wordpress插件或一个typo3模块。这些类型都是特定于某些项目的,它们需要提供能够安装该类型软件包的安装程序

如何使用
  • 将composer插件包括到您的
    composer.json
    require
    部分:
“需要”:{
“php”:“>=5.3”,
“mnsami/composer自定义目录安装程序”:“1.1.*”,
“独白/独白”:“*”
}
  • extra
    部分中,定义要在其中安装软件包的自定义目录:
“额外”:{
“安装程序路径”:{
“/独白/”:[“独白/独白”]
}
通过添加
安装程序路径
部分,您告诉composer在根目录的
monolog
文件夹中安装
monolog

  • 作为一项新增功能,我们在定义下载目录时增加了更多的灵活性,就像
    编写器/安装器
    一样,换句话说,您可以在
    安装程序路径
    部分中使用
    {$vendor}
    {$name}
    等变量:
“额外”:{
“安装程序路径”:{
“/customlibs/{$vendor}/db/{$name}”:[“条令/orm”]
}
}
以上内容将设法在项目根文件夹中的
customlibs
下安装
doctrine/orm


Composer
type:project
在本安装程序中不受支持,因为类型为
project
的软件包仅适用于另一个软件包所需的应用程序外壳,如
symfony/framework standard edition

尝试使用此Composer.json,它包括Wordpress(目前为v3.9)

它使用fancyguy/webroot安装程序安装到特定目录

此文件应位于根wordpress目录中。额外部分显示“webroot dir”为“.”;此文件将安装到当前目录中,(不要使用“/”或“/”,如果您希望将其安装到特定目录中,只需将“.”更改为要安装到的目录名

"extra": {
    "webroot-dir": ".",
    "webroot-package": "wordpress"
}
因此,在运行此文件后,您应该具有正常的wordpress结构,将cforms放置在wp content/plugins目录中,要安装主题,您可以复制cforms部分,并将类型更改为“wordpress theme”,将其安装到themes目录中

我绝对不是作曲家方面的专家,但我能够让它正常工作

{
  "name": "mycompany/wordpress-install",
  "description": "Themes and plugins for our wordpress install.",
  "authors": [
    {
        "name": "Me",
        "email": "example@example.net"
    }
  ],
  "repositories": [
    {
        "type": "composer",
        "url": "http://wpackagist.org"
    },
    {
        "type": "package",
        "package": {
            "name": "wordpress",
            "type": "webroot",
            "version": "3.9",
            "dist": {
                "type": "zip",
                "url": "https://github.com/WordPress/WordPress/archive/3.9.zip"
            }
        }
    },
    {
        "type": "package",
        "package": {
            "name": "cforms",
            "type": "wordpress-plugin",
            "version": "14.5.2",
            "dist": {
                "url": "http://www.deliciousdays.com/download/cforms-v14.5.zip",
                "type": "zip"
             }
        }
    }
 ],
    "require": {
      "php": ">=5.3.0",
      "composer/installers": "~1.0",
      "wordpress": "3.9",
      "fancyguy/webroot-installer": "1.0.0",
      "wpackagist/wordpress-seo": "*",
      "cforms": "14.5.2"
    },
    "extra": {
        "webroot-dir": ".",
        "webroot-package": "wordpress"
    }

}
请注意,使用wpackagist,您可以通过以下链接查看可安装插件/主题的列表:

如果您想包含Wordpress插件响应库中的插件,您可以轻松添加它们。例如,如果您想添加Yoast Wordpress SEO插件,您需要添加以下内容(请注意,您需要知道插件的slug才能添加):


我来看看这个!嗯,我还不需要这个!到目前为止,我只需要将它们定义为
“类型”:“wordpress插件”
“类型”:“wordpress主题”
。为了让它自己安装wordpress,我使用
fancyguy/webroot安装程序

{
  "name": "mycompany/wordpress-install",
  "description": "Themes and plugins for our wordpress install.",
  "authors": [
    {
        "name": "Me",
        "email": "example@example.net"
    }
  ],
  "repositories": [
    {
        "type": "composer",
        "url": "http://wpackagist.org"
    },
    {
        "type": "package",
        "package": {
            "name": "wordpress",
            "type": "webroot",
            "version": "3.9",
            "dist": {
                "type": "zip",
                "url": "https://github.com/WordPress/WordPress/archive/3.9.zip"
            }
        }
    },
    {
        "type": "package",
        "package": {
            "name": "cforms",
            "type": "wordpress-plugin",
            "version": "14.5.2",
            "dist": {
                "url": "http://www.deliciousdays.com/download/cforms-v14.5.zip",
                "type": "zip"
             }
        }
    }
 ],
    "require": {
      "php": ">=5.3.0",
      "composer/installers": "~1.0",
      "wordpress": "3.9",
      "fancyguy/webroot-installer": "1.0.0",
      "wpackagist/wordpress-seo": "*",
      "cforms": "14.5.2"
    },
    "extra": {
        "webroot-dir": ".",
        "webroot-package": "wordpress"
    }

}
    "require": {
      "php": ">=5.3.0",
      "composer/installers": "~1.0",
      "wordpress": "3.9",
      "fancyguy/webroot-installer": "1.0.0",
      "wpackagist/wordpress-seo": "*",
      "cforms": "14.5.2"
    }