logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builderâť—

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

âť—Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri
04/10/2025, by Ivan

Menu

Nello sviluppo di moduli personalizzati esistono diversi scenari che richiedono allo sviluppatore di aggiungere un file composer.json al proprio modulo. Alcuni di questi scenari dipendono dal fatto che il modulo personalizzato sia destinato a essere condiviso con la comunitĂ  come progetto su drupal.org.

Se lo sviluppatore del modulo desidera utilizzare una libreria PHP ospitata su packagist.org, deve aggiungere un file composer.json al proprio progetto.

Se il modulo è un modulo distribuito su drupal.org, ha dipendenze da altri moduli e vuole testare le modifiche a tali dipendenze usando DrupalCI come parte dello sviluppo, deve avere un composer.json che esprima queste dipendenze del modulo Drupal (DrupalCI può rilevare solo modifiche alle dipendenze nei patch all’interno di composer.json, non nei file .info o .info.yml).

Se lo sviluppatore del modulo vuole usare vincoli più espressivi, forniti da composer.json, come gli operatori caret (^) o tilde (~), essi sono possibili solo in composer.json. (Anche se Drupal stesso non sarà vincolato da queste restrizioni, esse verranno rispettate solo durante la fase di build se l’utente finale usa Composer per costruire il proprio sito.)

Se il modulo non ha alcuna dipendenza, o se le dipendenze sono esclusivamente altri moduli Drupal, allora composer.json non è richiesto. Tuttavia la presenza di composer.json non ha effetti negativi.

Indipendentemente dal fatto che lo sviluppatore abbia un file composer.json, le dipendenze del modulo Drupal devono comunque essere espresse nei file .info.yml, così che Drupal possa garantire che i moduli corretti vengano abilitati.

Definire il vostro modulo come pacchetto PHP

La comunità PHP più ampia utilizza Composer per gestire i pacchetti; lo stesso vale per Drupal. Ad esempio, il progetto Drupal dipende dal pacchetto “drupal/core”. Il tipo di pacchetto “drupal/core” è definito come “drupal-core”, quindi Composer sa cosa farne. La libreria composer/installers definisce diversi tipi di pacchetti Drupal. Questi sono:

  • drupal-module
  • drupal-theme
  • drupal-library
  • drupal-profile
  • drupal-drush

Ecco un esempio completo di come il progetto mobile_detect utilizza composer.json per dipendere da un progetto esterno mobiledetect/mobiledetectlib:

{
    "name": "drupal/mobile_detect",
    "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices.",
    "type": "drupal-module",
    "homepage": "https://drupal.org/project/mobile_detect",
    "authors": [
        {
            "name": "Matthew Donadio (mpdonadio)",
            "homepage": "https://www.drupal.org/u/mpdonadio",
            "role": "Maintainer"
        },
        {
            "name": "Darryl Norris (darol100)",
            "email": "admin@darrylnorris.com",
            "homepage": "https://www.drupal.org/u/darol100",
            "role": "Co-maintainer"
        }
    ],
    "support": {
        "issues": "https://drupal.org/project/issues/mobile_detect",
        "irc": "irc://irc.freenode.org/drupal-contribute",
        "source": "https://cgit.drupalcode.org/mobile_detect"
    },
    "license": "GPL-2.0-or-later",
    "minimum-stability": "dev",
    "require": {
        "mobiledetect/mobiledetectlib": "~2.8"
    }
}

Per nominare il vostro pacchetto dovete seguire le convenzioni di naming di Drupal Composer.

Definire le dipendenze in composer.json

Se lo desiderate potete definire dipendenze esterne per il vostro modulo in composer.json. Il core di Drupal non rileverà o gestirà automaticamente queste dipendenze. Per utilizzare le dipendenze definite nel file composer.json del progetto, è necessario usare una delle seguenti strategie:

 

Per ulteriori informazioni su Composer come gestore di dipendenze per Drupal, consultate il confronto tra Composer e Drush Make come gestori di dipendenze.

Aggiungere dipendenze da altri moduli Drupal

Per impostazione predefinita Composer cerca solo pacchetti pubblicati su Packagist quando risolve le dipendenze. La maggior parte dei moduli Drupal non è pubblicata lì, poiché Drupal ha un proprio repository. Per questo motivo potreste ricevere messaggi di errore come:

Il pacchetto richiesto drupal/module non è stato trovato in nessuna versione, forse c’è un errore di battitura nel nome del pacchetto.

Potete indicare a Composer di cercare i moduli Drupal nel repository packages.drupal.org eseguendo il seguente comando:

$ composer config repositories.drupal composer https://packages.drupal.org/8

Questo comando aggiungerĂ  la seguente sezione al vostro file composer.json:

  "repositories": {
    "drupal": {
      "type": "composer",
      "url": "https://packages.drupal.org/8"
    }
  }

CompatibilitĂ  con Drupal 9

Avere un file composer.json non è richiesto per la compatibilità con Drupal 9. Drupal 9 è compatibile con il file info.yml. Se il vostro progetto ha un file composer.json, non è necessario che contenga anche un requisito di compatibilità con drupal/core per essere compatibile con Drupal 9. Tuttavia, se avete un requisito per drupal/core nella sezione require, questo deve essere compatibile con Drupal 9.