Ruta de instalación de Composer para el paquete personalizado

6 minutos de lectura

He leído otras preguntas sobre este tema y parece que no puedo hacer que esto funcione. Estoy tratando de obtener una descarga de formularios como un paquete personalizado para instalar en wp-content/plugins/cforms. He conseguido que esto funcione para los otros paquetes que wpackagist suministros e incluso algunos complementos personalizados desarrollados internamente.

Esto es lo que tengo:

{
  "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"]
    }
  }
}

Está descargando cforms bien, pero todavía lo está poniendo en vendor/deliciousdays/cforms cuando lo quiero en (obviamente) wp-content/plugins/cforms. ¿Qué estoy haciendo mal?

Intente usar este composer.json, incluye WordPress (v3.9 a partir de ahora).

Utiliza fancyguy/webroot-installer para instalar en ciertos directorios.

Este archivo está destinado a estar en el directorio raíz de wordpress. La sección adicional muestra que “webroot-dir” es “.”; Esto se instalará en el directorio actual (no use “https://stackoverflow.com/” o “./”), si desea que se instale en un directorio específico, simplemente cambie “.” al nombre del directorio en el que desea instalar.

"extra": {
    "webroot-dir": ".",
    "webroot-package": "wordpress"
}

Entonces, después de ejecutar este archivo, debe tener la estructura normal de wordpress con cforms ubicados en el directorio wp-content/plugins, para instalar un tema, puede copiar la sección de cforms y cambiar el tipo a “wordpress-theme” para instalarlo en el directorio de temas.

De ninguna manera soy un experto con el compositor, pero pude hacer que esto funcionara correctamente.

{
  "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"
    }

}

Tenga en cuenta que al usar wpackagist, puede ver una lista de complementos/temas instalables en estos enlaces:

http://plugins.svn.wordpress.org/

http://themes.svn.wordpress.org/

Si desea incluir complementos del Repositorio de complementos de WordPress, puede agregarlos fácilmente. Por ejemplo, si quisiera agregar el complemento Yoast WordPress SEO, agregaría lo siguiente para requerir (tenga en cuenta que necesita saber el slug del complemento para agregarlo):

    "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"
    }

Finalmente lo descubrí después de probar muchas cosas diferentes. Creo que me faltaron dos cosas:

En la declaración del paquete lo cambié para tener el "type": "wordpress-plugin"y luego en los requisitos tuve que agregar "composers/installers": "~1.0" así (también tenga en cuenta que el extra fue eliminado por completo):

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

Todavía no he podido averiguar cómo obtener un paquete personalizado para instalarlo en un directorio de mi eligiendo incluso con la composer/installers requieren allí. Simplemente parece ignorar todo hasta que agregué un tipo al objeto, y luego lo obliga a descargarlo en la ubicación definida por ese tipo, según cómo composer/installers decidió mapearlo.

Pero creo que esto funcionará por ahora… Si alguien sabe cómo hacer que se descargue, digamos, "myfolder/something/cforms" Aceptaré tu respuesta.

  • No estoy seguro acerca de los tipos de paquetes personalizados, pero para wordpress-pluginesto parece anular composer/installersvalor de: gist.github.com/a42e9d10dc3d934bcf5b.

    – Artem Russakovskii

    21 de septiembre de 2015 a las 7:59

  • hay compositor-instaladores-extensor que “desbloquea” el extra:library-paths para usar con cualquier paquete

    – dímvico

    12/10/2016 a las 13:26

avatar de usuario
mina.nsami

Sucede que tengo una respuesta para ti, porque me encontré con el mismo problema. Claramente, ahora hay una gran demanda de paquetes de instalación personalizados.

los composer/installers SOLO funciona en marcos definidos y CMS (s), pero no funciona para paquetes de composición normales.

Implementé este complemento de compositor para instalar paquetes en carpetas definidas por el usuario (personalizadas), simplemente puede incluirlo en su composer.json, siga el ejemplo y dígame si tiene más preguntas 🙂

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

compositor-directorio-personalizado-instalador

Un complemento de Composer, para instalar diferentes tipos de paquetes de Composer en directorios personalizados fuera de la ruta de instalación predeterminada de Composer que se encuentra en el vendor carpeta.

esto no es otro composer-installer biblioteca para admitir tipos de paquetes que no son de compositor, es decir application .. etc. Esto es solo para agregar la flexibilidad de instalar paquetes de compositores fuera de la carpeta del proveedor. Este paquete solo admite composer tipos de paquetes,

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

El tipo de paquete. Por defecto es biblioteca.

Los tipos de paquetes se utilizan para la lógica de instalación personalizada. Si tiene un paquete que necesita alguna lógica especial, puede definir un tipo personalizado. Esto podría ser un paquete de Symfony, un complemento de wordpress o un módulo typo3. Todos estos tipos serán específicos para ciertos proyectos y deberán proporcionar un instalador capaz de instalar paquetes de ese tipo.

Cómo utilizar

  • Incluya el complemento Composer en su composer.json require sección::
"require":{
    "php": ">=5.3",
    "mnsami/composer-custom-directory-installer": "1.1.*",
    "monolog/monolog": "*"
  }
  • En el extra sección defina el directorio personalizado en el que desea que se instale el paquete::
  "extra":{
    "installer-paths":{
      "./monolog/": ["monolog/monolog"]
    }

agregando el installer-paths parte, le está diciendo al compositor que instale el monolog paquete dentro del monolog carpeta en su directorio raíz.

  • Como una característica nueva agregada, hemos agregado más flexibilidad en la definición de su directorio de descarga igual que el composer/installersen otras palabras, puedes usar variables como {$vendor} y {$name} en tus installer-path sección:
"extra": {
    "installer-paths": {
        "./customlibs/{$vendor}/db/{$name}": ["doctrine/orm"]
    }
}

lo anterior logrará instalar el doctrine/orm paquete en la carpeta raíz de su proyecto, en customlibs.

Nota

Compositor type: project no es compatible con este instalador, ya que los paquetes con tipo project solo tiene sentido para ser utilizado con shells de aplicaciones como symfony/framework-standard-editionpara ser requerido por otro paquete.

  • ¡Le echaré un vistazo a esto!

    – nzifnab

    31 de marzo de 2014 a las 18:24

  • ¡Hmm, no he terminado necesitando esto todavía! Hasta ahora ha sido suficiente para mí simplemente definirlos como "type": "wordpress-plugin" y "type": "wordpress-theme". Y para que se instale wordpress mismo terminé usando fancyguy/webroot-installer con "webroot-dir": "./" que descomprime automáticamente la carpeta de wordpress, toma su contenido y lo mete en el directorio actual.

    – nzifnab

    02/04/2014 a las 20:23

  • Esto es exactamente lo que estaba buscando. El complemento de instalación que proporciona Composer no funciona para mí porque estoy tratando de instalar paquetes personalizados que no se relacionan con el software de código abierto.

    – steadweb

    27 de febrero de 2015 a las 10:31

¿Ha sido útil esta solución?