Image
composer.json

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

Últimos posts