É aceitável modificar o arquivo composer.json do Drupal?


8

Drupal adere à melhor prática de nunca modificar o núcleo .

O Drupal 8 possui um arquivo composer.json embutido no núcleo, se você precisar adicionar uma biblioteca de terceiros, modifique o composer.json ou existe uma maneira melhor de fazer isso?


Podemos reabrir essa discussão, já que faz dois anos desde a última vez que foi discutida? Eu li que no Drupal 8 RC1, agora é possível gerenciar módulos diretamente via composer requirena documentação do Drupal. Tudo bem, mas e se eu precisar fazer o composer require drupal/drupal-extensionque puxa o Behat e, posteriormente, modifica muitas coisas no diretório de fornecedores do núcleo D8? Essa é uma questão particularmente complicada no Pantheon, onde aparentemente a raiz do repositório deve ser a raiz do Drupal.
— kostajh

Respostas:


5

É possível consumir o Drupal 8 em seu próprio composer.jsonarquivo:

{
    "name": "davidbarratt/mydrupalproject",
    "require": {
        "drupal/drupal": "8.*"
        "composer/installers": "1.*"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "drupal/drupal",
                "type": "drupal-core",
                "version": "8.0.0-dev",
                "source": {
                    "url": "http://git.drupal.org/project/drupal.git",
                    "type": "git",
                    "reference": "8.x"
                }
            }
        }
    ],
    "minimum-stability": "dev"
}

Há uma solicitação pull para composer/installerspermitir a instalação dos drupal-coretipos de projeto: http://github.com/composer/installers/pull/38

Adoraria sua entrada na solicitação pull acima, assim como na outra que permite a instalação de módulos / temas / perfis.

Outra solução que atualmente funciona é o módulo Composer Manager , que facilita o composer.jsonuso de módulos. Atualmente, está disponível para o Drupal 7 e estará disponível para o Drupal 8 assim que as versões alfa do Drupal 8 estiverem fechadas.

Muito obrigado, Rob


Deseja atualizar sua resposta. :) drupal.org/node/2404989
— David Barratt

1

Há também o módulo Composer que é um wrapper Drush para o Composer. Seu módulo pode fornecer seu próprio arquivo de compositor que o Drush utilizará para baixar dependências adicionais para o seu módulo - ou site, se você usar, digamos, pelo menos 1 módulo "personalizado" para o seu site drupal.

Também recomendo assistir a este seminário Drupal8 / Composer da DrupalCon Munich 2012: http://munich2012.drupal.org/content/drupal-has-dependencies-lets-manage-them


O Drush Composer é apenas um invólucro do Composer. Se você o usar para modificar os requisitos do Drupal Composer, ele modificará o composer.jsonarquivo raiz do Drupal . Além disso, o vídeo de Munique 2012 não está mais disponível.
— Paul-m

0

Sim.

É aceitável usar o Composer da maneira que deveria ser usado. :-)

Editar:

Este pacote existe para ajudá-lo a gerenciar seu projeto Drupal baseado em Composer: https://github.com/drupal-composer/drupal-project


Você tem uma citação?
— David Barratt

Eu tenho o seguinte: composer create-project drupal/drupal drupal_root ~8@dev --keep-vcs cd drupal_root composer require vendor/package ~1... decida que você não precisa desse pacote ... git checkout -- composer.json composer updateE eu gostaria de manter isso.
— Paul-m

Isso ainda modifica o arquivo composer.json raiz. Você ainda teria que mesclar suas alterações com as alterações do Drupal. Ou pior, se alguém não atualizar o arquivo do compositor conforme informado, você poderá encontrar grandes erros ou falhas críticas de segurança. Como você contorna isso?
— David Barratt

Você não Você tem que fazer essas coisas. Não há nenhum material de compositor automático para o Drupal 8 no momento, além de qualquer script que você possa criar para fazê-lo.
— Paul-m

Se você precisar mesclar alterações com o Drupal, não é exatamente por isso que você não modifica o núcleo?
— David Barratt
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.