D8 Composer - pierregermain/MyDrupal GitHub Wiki

Get Composer

  1. Install composer

    https://getcomposer.org/download/

  • It's important to put composer in a bin folder
  • It's important to be able to execute composer using composer instead of composer.phar
  1. Install drupal

    To install drupal in ~/webapps/some-dir we do

    cd webapps/some-dir;
    composer show drupal/recommended-project --all
    composer create-project drupal/recommended-project .
    

    Have a look if you need to sudo apt-get install some dependencies. And do not forget to restart the service apache2

To install new module

composer require vendor/package:<package-version>

Ex. composer require drupal/juicerio:1.x-dev

To disable module

composer remove vender/package

To enable/disable modules

composer install

Updating

Do have handy the git tipps https://github.com/pierregermain/MyTux/wiki/git

https://www.drupal.org/docs/8/update/update-modules

Get the latest files and code from PROD

composer outdated "drupal/*"
composer update --dry-run
composer update
drush updb
drush cr
drush cex

To update core

https://www.drupal.org/docs/8/update/update-core-via-composer

Patching Core (con ficheros de drupal.org)

Primero instalar:

composer require cweagans/composer-patches

Y ahora en la parte de "extra" añadir lo siguiente (sin añadir la parte de "extra" de este ejemplo, sólo se añade lo de enable-patching y patches)

"extra": {
    "enable-patching": true,
    "patches": {
        "drupal/core": {
            "<patch1 information>": "<patch1 file path>",
            "<patch2 information>": "<patch2 file path>"
        }
     }
}

Y finalmente para que nos quite "core" y le aplique el parche hay que hacer lo siguiente:

composer install

Patching Core (con ficheros realizados por mi o otras personas, en local)

https://groups.drupal.org/node/518975

Patching without git utilities: https://www.shellhacks.com/create-patch-diff-command-linux/

diff -u OriginalFile UpdatedFile > PatchFile
patch OriginalFile < PatchFile # or patch -p1

Para revertir parche

patch -R OriginalFile < PatchFile

Para añadir al composer

(...)            

"drupal/imce": {
  "Select searched item": "./web/patches/imce.patch"
},

(...)

Notes about Update Drupal core 8.7 to 8.8

https://www.drupal.org/project/drupal/issues/3100173#comment-13388195
https://www.palantir.net/blog/guide-drupal-8-8-update
https://www.drupal.org/docs/develop/using-composer/using-drupals-composer-scaffold

Ojo si no estas usando una distro de drupal correcta (mirar comentario #2 y #3) https://www.drupal.org/project/drupal/issues/3049055

Manual para hacer el update desde 8.7 a 8.8

Manera de actualizar drupal de la forma más segura posible cuando no es posible hacerlo de forma automática por no usar drupal/core-recommended

  1. Instalar Drupal con composer a la versión que quereamos (8.8 en nuestro caso): Comando sacado de: https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies

    Correr dicho comando en una nueva carpeta y crear un nuevo virtualhost

    composer create-project drupal/recommended-project drupal-8.8
    

    Instalar la DB de Drupal con la UI: usa una DB nueva por ahora.

  2. Inicializar el proyecto con git hacia una nueva rama

git init
git add --all
git commit -m "Install drupal 8.8"
git remote add origin <url-del-proyecto>
git remote -v
git checkout -b drupal8_8
git push origin drupal8_8 
  1. Hacer backup de la db

  2. Hacer composer require de TODOS los módulos y themes usados

  3. Alternativamente meter los require en el composer.json y ejecuta composer update

  4. Copiar módulos custom hacia el nuevo proyecto

  5. Copiar themes custom hacia el nuevo proyecto

  6. Copiar files al nuevo proyecto

  7. Crear y configura carpeta de configuraciones config/sync (desde el settings.php)

  8. Configurar el settings.php para que use la DB antigua

  9. drush cr

  10. chmod u+w sites/default

  11. drush updb

  12. Hacer Testing

  13. Activar módulos que se tuvieron que desactivarse para el update (en el caso de pathauto hay que borrar sus configs y volver a regenerarlas despues)

Pro Tipps

If something fails do one of the following:

  • have a look at your composer.json file
    • Maybe core is in "replace" so it is defined as a polyfill and won't update
  • delete vendor folders

Composer templates

https://github.com/drupal/legacy-project
https://github.com/drupal/recommended-project

Install Drupal using drupal recommended project

https://www.drupal.org/docs/develop/using-composer/starting-a-site-using-drupal-composer-project-templates

composer show drupal/recommended-project --all
composer create-project drupal/recommended-project:8.9.0 drupal-8.9

More about versions: https://getcomposer.org/doc/articles/versions.md

https://drushcommands.com/drush-9x/site/site:install/

Example

composer create-project drupal/recommended-project:8.9.9 folder_name
drush si standard --db-url=mysql://user:pass@host:port/db_name --locale=es