Quiero usar Composer para administrar las dependencias de Drupal 8, pero no estoy seguro de cuál es el flujo de trabajo de actualización central correcto. En este momento estoy usando drush para actualizar el núcleo a la última versión beta, pero también tengo algunas dependencias en mi archivo composer.json, así que después de la actualización estoy usando la instalación de composer para instalar todas las dependencias de los proveedores contrib. Parece que la ejecución composer install
anula algunos archivos en el directorio central, aunque acabo de actualizar el núcleo a la última versión.
También he intentado editar manualmente el archivo composer.json y reemplazar la línea "drupal / core" con la versión beta específica, por ejemplo "drupal/core": "~8.0-beta14",
, pero aún anula los archivos en el directorio central.
¿Cuál es el flujo de trabajo correcto?
drush updatedb
cada vez que la actualización del compositor reemplace el núcleo de Drupal o cualquier módulo". - gracias y si inicialmente instaló drupal con estos pasos, drupal.org/node/2471553 , entonces necesita la ruta completa al drush particular con su instalación de Drupal 8 (ya que solían ejecutar la instalación como el paso final). Primero necesita cd en la web y, una vez en / web, el comando para actualizar el db con la ruta completa sería:../vendor/drush/drush/drush updatedb
(Encontré que esto funciona).A continuación está bien para parche libera 8.4.x> 8.4.y , pero no está mal para versiones menores 8.4.x> 8.5.x . Vaya a la ACTUALIZACIÓN 3 a continuación para ver lo que creo que es "la respuesta" para actualizaciones de lanzamiento menores.
1- Haga una copia de seguridad de cualquier archivo que venga con Drupal que haya modificado, como .htaccess, robots.txt, etc. (esos 2 son los que se cambian más comúnmente).
2- [Me dijeron que eliminar el archivo de bloqueo es incorrecto, vea ACTUALIZAR a continuación]
Elimine el archivo composer.lock (en la carpeta de nivel superior de su sitio). Esto se recrea en el paso 5.3- Verifique su composer.json (en la carpeta de nivel superior de su sitio) y asegúrese de que "drupal: core" esté en la sección de requisitos y no en una sección de reemplazo, por ejemplo
no
Si "drupal / core" está en la sección de reemplazo, muévalo a la sección requerida y elimine la sección de reemplazo. Si hay otras entradas en la sección de reemplazo, simplemente elimine "drupal / core", no toda la sección de reemplazo, pero creo que "drupal / core" es normalmente lo único que hay.
Ponga a qué versión desea actualizar en "drupal / core", ejemplos:
"drupal / core": "^ 8.5" - se actualizará a la última versión de 8.5. "drupal / core": "8.4.6" - se actualizará a la versión 8.4.6.
5- Ejecute esto (en la carpeta de nivel superior de su sitio):
6- Si no hay errores, haz lo habitual, ejecuta las actualizaciones y borra la memoria caché:
O si no usa drush, vaya a /update.php para ejecutar actualizaciones, luego a admin / config / development / performance y presione el botón "Borrar todas las cachés".
7- Si ha realizado una copia de seguridad de los archivos en el primer paso (.htaccess, robots.txt), vuelva a colocarlos. Pero verifique si Drupal realizó actualizaciones a esos archivos y agregue esos cambios a los suyos.
HECHO
Si hubo errores con la actualización del compositor en el paso 5, generalmente se debe a problemas con las versiones de las cosas en la carpeta del proveedor.
Esta es una gran publicación para tratar estos problemas: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update y lea las otras 2 publicaciones de Jeff en Drupal y Composer para obtener más conocimiento sobre eso.
2 personas en Twitter me dijeron que composer.lock no debería eliminarse (Paso 2 anterior). El
composer update drupal/core --with-dependencies
comando recrea el archivo de bloqueo de todos modos.Al probar este método, encuentro que funciona bien para 8.4.3> 8.4.6 (por ejemplo) pero obtengo errores para 8.4.6> 8.5.x. Informaré cuando lo resuelva.
Ejemplo de errores:
Esta publicación de Jeff Geerling aborda problemas similares, pero hasta ahora no tuve suerte: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update
Entonces ... lo único que parece funcionar para mí para 8.4.x> 8.5.x es la "opción nuclear" que muchos otros parecen usar, que se ejecuta
composer update
.Supongo que está bien siempre que esté seguro de las versiones del módulo en composer.json. Tal vez uno debería bloquearlos a la versión actual. Por ejemplo:
más bien que:
¿Pero es la respuesta correcta?
OK, la respuesta que parece estar en todas partes es hacer la "opción nuclear":
A. Eliminar la
/vendor
carpeta.B. Ejecute
composer update
y simplemente actualice sus módulos junto con core. O bloquee las versiones del módulocomposer.json
si no desea actualizarlas.Una persona en Drupal Slack dijo que "toda la filosofía de Composer es que siempre debe actualizar los paquetes, con la mayor frecuencia posible" . Empaquetado incluye módulos, creo. Entonces tiene sentido, supongo.
Una vez que pasé de 8.4.6 a 8.5.0, funcionó bien para pasar de 8.5.0 a 8.5.1
composer update drupal/core --with-dependencies
tal como lo hizo para 8.4.3 a 8.4.6.Estoy empezando a concluir que "la respuesta" es que eliminar la carpeta del proveedor y el archivo composer.lock, luego usarlo
composer update
está bien, y que uno simplemente debe asegurarse de que los números de versión para las dependencias en el archivo composer.json sean lo que desea . No es tan importante administrar las versiones de módulos que desea mantener o permitir actualizarcomposer.json
.Por ejemplo:
"drupal/admin_toolbar": "1.18",
significa quedarse con 1.18"drupal/admin_toolbar": "^1.18",
significa seguir adelante y actualizar, pero dentro de 1.x (no 2.x)Esto está respaldado por un comentario (General Redneck) en esta publicación: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update "Una de las cosas que he descubrí que trabajar como soporte es que bloquear las versiones de los módulos y el núcleo es una buena idea para que PUEDAS avisar cuando lo desees porque a veces algunos de los diversos complementos incluso no quieren comportarse correctamente ".
Por cierto, el archivo composer.lock no ayuda
composer update
porque se vuela (en lugar decomposer install
donde se lee el archivo de bloqueo):Correr
composer install
:composer.lock
existecomposer update
para crear unocomposer.lock
existe, instale las versiones especificadas del archivo de bloqueoCorrer
composer update
:composer.json
composer.lock
para reflejar las últimas versiones instaladasRef: https://www.engineyard.com/blog/composer-its-all-about-the-lock-file
Veo que esto se menciona anteriormente: https://github.com/drupal-composer/drupal-project . Lo he usado y está bien, pero no es un requisito para usar Composer con Drupal. Es confuso ya que "suena" como si fuera del nombre. Cuando comencé con Drupal 8, pensé que era necesario, así que construí mi primer sitio D8 con eso, pensando que era la mejor práctica.
Esa "versión" de Drupal tiene docroot en una carpeta / web, no en la carpeta superior del proyecto. También hay un montón de cosas agregadas a .gitignore en comparación con Drupal normal:
Por lo tanto, esta versión de Drupal está realmente más destinada a sitios que utilizan la integración continua para hacer una nueva compilación de Drupal en cada implementación, utilizando la instalación del compositor. Si implementa con un método más normal, obviamente tiene que enviar todo lo anterior a su repositorio git o no se implementará en su servidor [1], y todo eso es necesario para que Drupal se ejecute.
[1] si git está involucrado en su implementación, si implementa con SFTP, ignórelo.
fuente
composer update drupal/core symfony/config webflo/drupal-core-strict --with-dependencies
Nunca me ha fallado todavía. Funciona en varias versiones menores, por ejemplo, 8.3 -> 8.6Usando el paquete drupal / core en packagist.org podemos administrar el núcleo, los módulos contrib (temas y perfiles) y los otros proveedores a través del compositor.
He configurado los siguientes archivos en mi directorio raíz y ejecuté
composer install
composer.json
post_install.sh
Disfruta :)
fuente
Sí, puedes administrar el núcleo de Drupal con el compositor. Sin embargo, hay un par de cosas a tener en cuenta.
Probablemente obtendrá tiempos de espera debido a la cantidad de elementos que el compositor debe ejecutar, especialmente si se ejecuta en una VM local. Si ejecuta,
composer install
es probable que obtenga el error del compositor:Asegúrate de usar require
Agregue también una extensión al tiempo de espera en la configuración
Además, si eso no funciona, puede ejecutar la instalación del compositor desde fuera de SSH en su VM .
Esto evitará cualquier tiempo de espera de compartir NFS y desempaquetará Drupal en el lugar correcto.
fuente
"drupal / core": "~ 8.0-beta14" significa cualquier versión mayor que 8.0-beta14 y menor que 9. Deberá eliminar la tilde para bloquearla en una versión específica. Luego, asegúrese de actualizar su archivo de bloqueo ejecutando Composer Up, y en el sistema de destino use la instalación de Composer.
Una manera fácil de comenzar es construir la base de código usando https://github.com/drupal-composer/drupal-project .
Cuando necesitamos actualizar algo como actualizar core, ejecutas "composer up" localmente. Esto actualizará el archivo composer.lock.
Cuando otros desarrolladores despliegan, o en una secuencia de comandos de implementación, ejecuta "instalación del compositor", que utiliza el archivo de bloqueo.
La línea en nuestro composer.json para Drupal core es:
La tilde () significa cualquier liberación dentro del número 8 (pero no 9) .
Si desea bloquearlo a una versión específica, no debe usar la tilde.
luego ejecute "composer up" localmente, confirme el archivo composer.json y composer.lock, y luego ejecute "composer install" en otras instalaciones después de desplegar la base de código.
fuente