Encontrei Dependências em um módulo personalizado com o drupal-compositer . Como posso incluir uma biblioteca de terceiros no meu módulo personalizado sem usar o Composer Manager e Como gerenciar as dependências do compositor no drupal 8, que estão relacionadas à minha pergunta, mas não parece mais aplicável desde o Drupal 8.1 e a descontinuação do gerente do Composer .
Também guias populares como A introdução definitiva ao D8 e Composer parecem não se aplicar, pois também mencionam o gerenciador do compositor.
A outra solução oposta ao gerenciador de compositores, alterar o arquivo composer.json principal, parece muito núcleo de hackers e provavelmente seria interrompido a cada atualização Drush do núcleo Drupal (?).
Mais especificamente, estou tentando atualizar o Views vCards do Drupal 7 para 8. Criei meu arquivo composer.json da seguinte maneira:
{
"name": "drupal/views_vcards",
"description": "Allows creation of vCards using the fields provided by the Views module.",
"type": "drupal-module",
"license": "GPL-2.0+",
"homepage": "https://drupal.org/project/views_vcards",
"require": {
"maennchen/zipstream-php": "0.3.*"
}
}
Mas se eu colocar um arquivo composer.json na pasta do módulo, como faço para informar o Drupal de que esse arquivo está lá e como garantir que a zipstream-php
biblioteca necessária seja baixada?
A simples execução composer update
da raiz do Drupal atualiza muitas dependências do Drupal, mas não inclui os arquivos composer.json que estão nas pastas dos módulos. Eu também não suponho que eu deveria estar chamando composer install
de dentro de todos os módulos com dependências.
Como conscientizo o Drupal da dependência de um módulo sem usar o gerenciador de compositores e / ou o núcleo de hackers?
ATUALIZAR:
O plug-in de composição do compositor usado pelo núcleo parece ter suporte para um caminho curinga:
{
"require": {
"wikimedia/composer-merge-plugin": "dev-master"
},
"extra": {
"merge-plugin": {
"include": [
"composer.local.json",
"extensions/*/composer.json" // < ---- THIS LINE
],
"require": [
"submodule/composer.json"
],
"recurse": true,
"replace": false,
"merge-dev": true,
"merge-extra": false
}
}
}
Por que o núcleo não se funde modules/*/composer.json
, isso resolveria tudo certo?
Atualização 2:
O raciocínio para não apoiar isso é abordado nesta edição (que também está em silêncio há algum tempo).
fonte
composer.json
arquivo é a nova maneira recomendada e o drush para baixar e instalar módulos está sendo substituído? Obviamente, o compositor resolverá automaticamente as dependências aninhadas e também fará o download das minhas dependências.Respostas:
Novo método usando o drupal-scaffold para maior flexibilidade
Para o Drupal 8.4.0 e superior, usando drush> 9.0.0 , o drush make está obsoleto e você deve usar um fluxo de trabalho do compositor completo, conforme detalhado nos links de documentação do drupal.org abaixo. Esses links recomendam o uso de um projeto do compositor, mas isso pode não funcionar na configuração de todos os servidores da web. A seguir, passo a passo, como configurar o composer.json manualmente para obter uma explicação detalhada. As instruções para adicionar módulos manualmente ainda podem ser feitas.
Então você precisa adicionar manualmente ao compositor.json o seguinte, com base em suas preferências, porque não há como fazê-lo automaticamente com o compositor como está. Isso configurará o drupal-scaffold para instalar seus módulos onde você desejar (ao contrário do fornecedor / ou do diretório escolhido por algum outro desenvolvedor). Altere 'webroot' para 'www' ou 'public' ou qual é o seu host.
Agora você pode instalar algumas dependências. Observe que o compositor deve poder usar scripts e plugins para que isso funcione.
Execute o script drupal-scaffold uma vez (ou no servidor de compilação, conforme necessário):
O núcleo do Drupal, módulos, temas, etc ... podem ser instalados conforme as instruções abaixo sem o drupal-merge-plugin.
Método mais antigo usando drupal-merge-plugin ou trabalhando diretamente com o core
Para o Drupal 8.1.0 e superior, você pode usar o compositor para exigir diretamente os módulos do Drupal. A documentação sobre o uso do Composer em um projeto Drupal e o uso do Composer para instalar pacotes Drupal através do Drupal.org foi atualizada para aproveitar as vantagens do pacote do drupal.org. Acho que já funciona bem em um cenário de implantação.
Para o desenvolvimento, acho que adicionar manualmente a dependência com
composer require
funciona bem. A abordagem de mesclagem também funciona com o drupal-merge-plugin e eu uso isso para fazer meu fluxo de trabalho drush.Atualização 2016.06.22
Corri um problema usando o drush make, que adicionava as tags de versão tradicionais do Drupal e os URLs do pacote drupal.org usando sempre. Para esse fim, precisei usar o packagist mais estável em https://packagist.drupal-composer.org , que ainda suporta as tags da versão tradicional do Drupal.
Observe também que o servidor ou a máquina de construção requer uma quantidade exorbitante de memória para fazer uma atualização (ou exigir) do compositor , o que é necessário em todos os cenários em que a execução da atualização do compositor em uma máquina de desenvolvimento semelhante não é possível em seu processo de construção.
Atualização 2016.09.23
Atualização 2018.03.30
fonte