Como atualizo o core com o Composer?


10

Ok, é certo que eu sou um compositor iniciante. Então, no meu site anterior, usei o gerenciador de compositores para atualizar o núcleo do Drupal. Isso foi bastante simples de usar (basta executar "composer drupal-update"). No entanto, o gerente do compositor agora diz que está obsoleto.

A versão do Drupal 8 deste módulo está obsoleta e não é mais necessária, devido a melhorias no Drupal 8.1. Use o Composer diretamente para obter os módulos necessários, que também farão o download das bibliotecas necessárias.

Hoje, recebi um aviso de que preciso aplicar atualizações de segurança ao núcleo, mas não consigo encontrar nenhuma documentação sobre como atualizar o núcleo do Drupal com o compositor.

Isso é feito através do Drupal Console, Drush ou é um comando do compositor que eu preciso executar? Não sei ao certo qual é o processo preferencial para "baixar a versão mais recente do Drupal do drupal.org e substituir todos os arquivos manualmente".


Você pode usar o drush drush up drupal, acho que isso pode substituir o seu compositor.json tho (e outros arquivos), faça backup e reverta, se necessário. Depois que o uso composer updatee você deve ser bom para ir
Trupal

"(e outros arquivos)", sim, são os "outros arquivos" com os quais estou preocupado. Nesse ponto, eu poderia substituí-los manualmente a partir do download oficial e executar a atualização do compositor. Parece que deveria haver um processo mais fácil. Reprovar o gerente de compositores não parece fazer muito sentido quando não há alternativa no momento.
DrupalMonster

Respostas:


10

Para atualizar o Drupal usando o Composer, basta mover a "drupal/core": "~8.1"linha da seção de substituição para a seção de necessidade . No final, o conteúdo do arquivo composer.json é semelhante ao seguinte.

{
    "name": "drupal/drupal",
    "description": "Drupal is an open source content management platform powering millions of websites and applications.",
    "type": "project",
    "license": "GPL-2.0+",
    "require": {
        "composer/installers": "^1.0.21",
        "wikimedia/composer-merge-plugin": "~1.3",
        "drupal/core": "~8.1"
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "config": {
        "preferred-install": "dist",
        "autoloader-suffix": "Drupal8"
    },
    "extra": {
        "_readme": [
            "By default Drupal loads the autoloader from ./vendor/autoload.php.",
            "To change the autoloader you can edit ./autoload.php."
        ],
        "merge-plugin": {
            "include": [
                "core/composer.json"
            ],
            "recurse": false,
            "replace": false,
            "merge-extra": false
        }
    },
    "autoload": {
        "psr-4": {
            "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer"
        }
    },
    "scripts": {
        "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
        "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess",
        "post-package-install": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
        "post-package-update": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup"
    },
}

Eu estava acostumado a executar drush upca atualização do Drupal, mas isso substituiu meu arquivo composer.json e o diretório do fornecedor. Como consequência disso, devo executar composer updateo tempo todo para atualizar o conteúdo do diretório de fornecedores .

Agora, usando o Composer para atualizar o Drupal, também posso usá-lo para baixar / atualizar os módulos que estou usando.

O arquivo composer.json que estou usando é o seguinte.

{
    "name": "drupal/drupal",
    "description": "Drupal is an open source content management platform powering millions of websites and applications.",
    "type": "project",
    "license": "GPL-2.0+",
    "require": {
        "composer/installers": "^1.0.21",
        "wikimedia/composer-merge-plugin": "~1.3",
        "drupal/core": "~8.1",
        "drupal/imagick": "8.1.*@dev",
        "drupal/mollom": "^8.1",
        "drupal/honeypot": "^8.1"
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "config": {
        "preferred-install": "dist",
        "autoloader-suffix": "Drupal8"
    },
    "extra": {
        "_readme": [
            "By default Drupal loads the autoloader from ./vendor/autoload.php.",
            "To change the autoloader you can edit ./autoload.php."
        ],
        "merge-plugin": {
            "include": [
                "core/composer.json"
            ],
            "recurse": false,
            "replace": false,
            "merge-extra": false
        }
    },
    "autoload": {
        "psr-4": {
            "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer"
        }
    },
    "scripts": {
        "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
        "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess",
        "post-package-install": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
        "post-package-update": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup"
    },
    "repositories": {
        "drupal": {
            "type": "composer",
            "url": "https://packagist.drupal-composer.org"
        }
    }
}

Além de mover essa linha como eu disse, também executei os seguintes comandos.

composer config repositories.drupal composer https://packagist.drupal-composer.org
composer require drupal/honeypot
composer require drupal/mollom
composer require drupal/imagick 8.1.*@dev

O primeiro permite-me exigir módulos Drupal e atualizá-los.

A última vez que tentei, o repositório oficial do Drupal ainda estava no estágio alfa e me deu problemas com módulos que se declaravam pacotes do Composer, mas não com a configuração do tipo de pacote (ou seja, drupal-module). Espero que eles tenham resolvido o problema agora. Para o repositório do Drupal Packager, os comandos a serem usados ​​são os seguintes.

composer config repositories.drupal composer https://packages.drupal.org/8
composer require drupal/honeypot
composer require drupal/mollom
composer require drupal/imagick 1.*@dev

Se você já estava usando o https://packagist.drupal-composer.org e deseja substituir pelo site oficial do Packagist, precisará substituir o primeiro comando por composer config repositories.0 composer https://packages.drupal.org/8, que funciona se você não tiver outros repositórios, baseando-se Usando packages.drupal.org .

Observe também que o packagist.drupal-composer.org está programado para ser preterido em janeiro de 2017 (ou quando o Repositório de Pacotes oficial do Drupal.org estiver pronto) .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.