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-plugin
esto parece anularcomposer/installers
valor 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
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/installers
en otras palabras, puedes usar variables como{$vendor}
y{$name}
en tusinstaller-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-edition
para 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é usandofancyguy/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