Olá cupinchas! Dia desses lá no chat estavam discutindo sobre os diretórios de instalação do Drupal e como alterá-los, pois o padrão gerado no composer é dentro da pasta "web". Na verdade esse processo é bem simples usando o argumento --no-install e definindo manualmente a estrutura de pastas.
Usando composer
$ composer create-project drupal/recommended-project NOME-DO-PROJETO --no-install
Dessa forma, nada será instalado. Somente teremos os arquivos mapa, composer.json e composer.lock. Editando o composer.json, na seção "extra", vamos alterar o parâmetro "web-root" em "drupal-scaffold" e as direções em "installer-paths" de forma a refletir o que foi definido como web-root. O padrão gerado deve estar igual ou parecido com:
...
"extra": {
"drupal-scaffold": {
"locations": {
"web-root": "web/"
}
},
"installer-paths": {
"web/core": [
"type:drupal-core"
],
"web/libraries/{$name}": [
"type:drupal-library"
],
"web/modules/contrib/{$name}": [
"type:drupal-module"
],
"web/profiles/contrib/{$name}": [
"type:drupal-profile"
],
"web/themes/contrib/{$name}": [
"type:drupal-theme"
],
"drush/Commands/contrib/{$name}": [
"type:drupal-drush"
],
"web/modules/custom/{$name}": [
"type:drupal-custom-module"
],
"web/themes/custom/{$name}": [
"type:drupal-custom-theme"
]
},
...
Se quisermos que o index.php esteja dentro da pasta html, por exemplo, basta substituir os "web/" do trecho acima por "html/":
...
"extra": {
"drupal-scaffold": {
"locations": {
"web-root": "html/"
}
},
"installer-paths": {
"html/core": [
"type:drupal-core"
],
"html/libraries/{$name}": [
"type:drupal-library"
],
"html/modules/contrib/{$name}": [
"type:drupal-module"
],
"html/profiles/contrib/{$name}": [
"type:drupal-profile"
],
"html/themes/contrib/{$name}": [
"type:drupal-theme"
],
"drush/Commands/contrib/{$name}": [
"type:drupal-drush"
],
"html/modules/custom/{$name}": [
"type:drupal-custom-module"
],
"html/themes/custom/{$name}": [
"type:drupal-custom-theme"
]
},
...
Ou se quisermos o index.php no mesmo nível hierárquico do nosso composer.json:
...
"extra": {
"drupal-scaffold": {
"locations": {
"web-root": "./"
}
},
"installer-paths": {
"core": [
"type:drupal-core"
],
"libraries/{$name}": [
"type:drupal-library"
],
"modules/contrib/{$name}": [
"type:drupal-module"
],
"profiles/contrib/{$name}": [
"type:drupal-profile"
],
"themes/contrib/{$name}": [
"type:drupal-theme"
],
"drush/Commands/contrib/{$name}": [
"type:drupal-drush"
],
"modules/custom/{$name}": [
"type:drupal-custom-module"
],
"themes/custom/{$name}": [
"type:drupal-custom-theme"
]
},
...
Nesse último caso, podemos simplesmente usar "legacy-project" no lugar do primeiro comando citado aqui:
$ composer create-project drupal/legacy-project NOME-DO-PROJETO --no-install
Por último, rodar o "install" para termos nossos arquivos:
$ composer install
Abrass