Desejo usar o compositor para gerenciar dependências do Drupal 8, mas não tenho certeza de qual é o fluxo de trabalho de atualização do núcleo correto. No momento, estou usando o drush para atualizar o core para a versão beta mais recente, mas também tenho algumas dependências no meu arquivo composer.json, portanto, após a atualização, estou usando a instalação do compositer para instalar todas as dependências do fornecedor contrib. Parece que a execução composer install
substitui alguns arquivos no diretório principal, embora eu tenha acabado de atualizar o núcleo para a versão mais recente.
Eu também tentei editar manualmente o arquivo composer.json e substituir a linha "drupal / core" pela versão beta específica, por exemplo "drupal/core": "~8.0-beta14",
, mas ele ainda substitui os arquivos no diretório principal.
Qual é o fluxo de trabalho certo?
drush updatedb
sempre que a atualização do compositor substituir o núcleo do Drupal ou qualquer módulo." - obrigado e se você instalou o drupal inicialmente com essas etapas, drupal.org/node/2471553 , precisará do caminho completo para o drush específico com a instalação do Drupal 8 (como eles costumavam executar a instalação como a etapa final). Você primeiro precisa fazer o cd na web e, uma vez em / web, o comando para atualizar o banco de dados com o caminho completo seria:../vendor/drush/drush/drush updatedb
(Eu achei que isso funcionava).O seguinte é OK para sistema liberta 8.4.x> 8.4.y , mas não OK para lançamentos menores 8.4.x> 8.5.x . Vá para a ATUALIZAÇÃO 3 abaixo para o que acredito ser "a resposta" para atualizações menores de versão.
1- Faça backup dos arquivos que acompanham o Drupal que você modificou, como .htaccess, robots.txt, etc. (esses 2 são os mais comumente alterados).
2- [Me disseram que o arquivo de bloqueio de exclusão está errado, consulte ATUALIZAÇÃO abaixo]
Exclua o arquivo composer.lock (na pasta de nível superior do seu site). Isso é recriado na etapa 5.3- Verifique seu compositer.json (na pasta de nível superior do seu site) e verifique se o "drupal: core" está na seção de necessidade e não em uma seção de substituição, por exemplo
não
Se "drupal / core" estiver na seção de substituição, mova-o para a seção de necessidade e exclua a seção de substituição. Se houver outras entradas na seção de substituição, basta remover o "drupal / core" e não toda a seção de substituição - mas acho que "drupal / core" é normalmente a única coisa lá.
Coloque em qual versão você deseja atualizar em "drupal / core", exemplos:
"drupal / core": "^ 8.5" - será atualizado para a versão mais recente do 8.5. "drupal / core": "8.4.6" - será atualizado para a versão 8.4.6.
5- Execute isto (na pasta de nível superior do seu site):
6- Se não houver erros, faça o habitual, execute as atualizações e limpe o cache:
Ou, se não estiver usando o drush, vá para /update.php para executar atualizações, depois para admin / config / development / performance e clique no botão "Limpar todos os caches".
7- Se você fez o backup dos arquivos na primeira etapa (.htaccess, robots.txt), coloque-os de volta. Mas verifique se o Drupal fez atualizações nesses arquivos e adicione essas alterações às suas.
FEITO
Se houve erros com a atualização do compositor na etapa 5, geralmente isso ocorre devido a problemas com versões do material na pasta do fornecedor.
Este é um ótimo post para lidar com esses problemas: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update e leia os outros 2 posts de Jeff no Drupal and Composer para obter mais conhecimento sobre isso.
Foi-me dito por duas pessoas no Twitter que o composer.lock não deve ser excluído (Etapa 2 acima). O
composer update drupal/core --with-dependencies
comando recria o arquivo de bloqueio de qualquer maneira.Ao testar esse método, acho que funciona bem para 8.4.3> 8.4.6 (por exemplo), mas recebo erros para 8.4.6> 8.5.x. Irá relatar quando eu descobrir.
Exemplo de erros:
Este post de Jeff Geerling aborda questões semelhantes, mas até agora não tenho sorte: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update
Então ... a única coisa que parece funcionar para mim para 8.4.x> 8.5.x é a "opção nuclear" que muitos outros parecem usar, que é executada
composer update
.Acho que está tudo bem, desde que você tenha certeza das versões do módulo em composer.json. Talvez alguém deva bloqueá-los para a versão atual. Por exemplo:
ao invés de:
Mas é a resposta certa?
OK, a resposta que parece estar em toda parte é fazer a "opção nuclear":
A. Exclua a
/vendor
pasta.B. Execute
composer update
e simplesmente atualize seus módulos junto com o core. Ou bloqueie as versões do módulo,composer.json
se você não quiser atualizá-las.Uma pessoa do Drupal Slack disse que "toda a filosofia do Composer é que você deve sempre atualizar os pacotes com a maior frequência possível" . O pacote inclui módulos, eu acho. Então faz algum sentido, eu acho.
Quando cheguei do 8.4.6 ao 8.5.0, isso funcionou bem para passar do 8.5.0 ao 8.5.1
composer update drupal/core --with-dependencies
, da mesma forma que nos 8.4.3 ao 8.4.6.Estou começando a concluir que "a resposta" é excluir a pasta do fornecedor e o arquivo composer.lock e, em seguida, usá
composer update
-lo, e deve-se simplesmente garantir que os números de versão das dependências no arquivo composer.json sejam o que você deseja . Não é tão importante gerenciar em quais versões do módulo você deseja manter ou permitir a atualizaçãocomposer.json
.Por exemplo:
"drupal/admin_toolbar": "1.18",
significa ficar com 1,18"drupal/admin_toolbar": "^1.18",
significa ir em frente e atualizar, mas dentro de 1.x (não 2.x)Isso é apoiado por um comentário (General Redneck) nesta postagem: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update "Uma das coisas que eu O que eu descobri enquanto trabalho no suporte é que bloquear as versões dos módulos e do núcleo é uma boa idéia, para que você possa ouvir a coisa quando quiser, porque há momentos em que alguns dos vários plugins nem querem se comportar corretamente. "
A propósito, o arquivo composer.lock não ajuda em nada
composer update
porque fica deslumbrado (ao contrário decomposer install
onde o arquivo de bloqueio é lido):A corrida
composer install
irá:composer.lock
existecomposer update
para criar umcomposer.lock
existir, instale as versões especificadas no arquivo de bloqueioA corrida
composer update
irá:composer.json
composer.lock
para refletir as versões mais recentes instaladasRef: https://www.engineyard.com/blog/composer-its-all-about-the-lock-file
Vejo que isso é mencionado acima: https://github.com/drupal-composer/drupal-project . Eu usei isso e está bom, mas não é um requisito para usar o Composer com o Drupal. É confuso, pois meio que "soa" como se fosse o nome. Quando comecei com o Drupal 8, pensei que era necessário, então construí meu primeiro site D8 com isso, pensando que era uma prática recomendada.
Essa "versão" do Drupal tem ele docroot em uma pasta / web, não na pasta superior do projeto. Também há um monte de coisas adicionadas ao .gitignore em comparação com o Drupal normal:
Portanto, esta versão do Drupal é realmente mais voltada para sites que usam integração contínua para fazer uma nova compilação do Drupal em cada implantação, usando a instalação do compositor. Se você implantar com um método mais normal, obviamente precisará comprometer todo o material acima no seu repositório git ou ele não será implantado no seu servidor [1], e esse material é necessário para que o Drupal seja executado.
[1] se o git estiver envolvido com sua implantação - se você implantar com SFTP, ignore isso.
fonte
composer update drupal/core symfony/config webflo/drupal-core-strict --with-dependencies
nunca me falhou ainda. Funciona em várias versões secundárias, por exemplo, 8.3 -> 8.6Usando o pacote drupal / core em packagist.org , podemos realmente gerenciar o núcleo, os módulos contrib (, temas e perfis) e os outros fornecedores via compositor.
Eu configurei os seguintes arquivos no meu diretório raiz e executei
composer install
compositer.json
post_install.sh
Desfrutar :)
fonte
Sim, você pode gerenciar o núcleo do Drupal com o compositor. Existem algumas coisas que você deve estar ciente.
Você provavelmente terá tempos limite devido a vários itens que o compositor precisa executar, principalmente se você executar em uma VM local. Se você executar
composer install
, provavelmente receberá o erro do compositor:Certifique-se de usar
Adicione também uma extensão ao tempo limite na configuração
Além disso, se isso não funcionar, você pode executar a instalação do compositor de fora do SSH na sua VM .
Isso ignorará qualquer tempo limite de compartilhamento do NFS e descompactará o Drupal no lugar certo.
fonte
"drupal / core": "~ 8.0-beta14" significa qualquer versão maior que 8.0-beta14 e menor que 9! Você deseja remover o til para travá-lo em uma versão específica. Em seguida, certifique-se de atualizar seu arquivo de bloqueio executando o compositor e, no sistema de destino, use a instalação do compositor.
Uma maneira fácil de começar é criar a base de código usando https://github.com/drupal-composer/drupal-project .
Quando precisamos atualizar algo como atualizar o núcleo, você executa o "compositor" localmente. Isso atualizará o arquivo composer.lock.
Quando outros desenvolvedores são suspensos ou em um script de implantação, você executa a "instalação do compositor", que usa o arquivo de bloqueio.
A linha em nosso compositor.json para o núcleo do Drupal é:
O til () significa qualquer liberação dentro do número 8 (mas não 9) .
Se você deseja bloqueá-lo para uma versão específica, não deve usar o til.
execute o "compositer up" localmente, confirme o arquivo composer.json e o composer.lock e execute a "instalação do compositor" em outras instalações depois de puxar a base de código.
fonte