Domanda

Il mio progetto è costituito da più bundle alcuni dei quali sono necessari e alcuni utilizzerò su server specifici.Ora ho bisogno di aggiungere dipendenze per un pacchetto non richiesto.Sento che è uno spreco da aggiungere come una dipendenza dal progetto nel compositore principale.json poiché potrei non usare quel codice se non uso il pacchetto.

è possibile avere un file composer.json all'interno di quel pacchetto?Se non è possibile come posso gestire il mio caso?

Esempio

src/
   Project/
      RequiredFirstBundle/
      RequiredSecondBundle/
      Non-RequiredBundle/
              composor.json 
.

Ho provato:

//Path: src/Project/Non-RequiredBundle/composer.json

{
    "name": "project/non-requiredbundle",
    "description": "desc",
    "type": "symfony-bundle",
    "license": "MIT",
    "authors": [
        {
            "name": "name",
            "email": "email"
        }
    ],
    "require": {
        "symfony/framework-bundle": "~2.2",
        "another/dependency": "*"
    },
    "autoload": {
        "psr-0": { "Project\\Non-RequiredBundle": "" }
    },
    "target-dir": "Project/Non-RequiredBundle"
}
.

Ma non vedo che il file viene utilizzato quando eseguo composer.phar update

Grazie

È stato utile?

Soluzione

Se ti capisco correttamente, stai pensando di avere una versione del software contenente tutto e distribuirlo ovunque o avere più versioni con diverse dipendenze distribuite sul singolo server del software.

Non penso che la ragione dovrebbe essere quella di salvare alcuni byte sul harddrive.

Ma il compositore non può aiutarti con questo.Infatti, sei costretto a includere qualsiasi dipendenza che si desidera utilizzare da qualche parte in quel compositore.json per rendere il compositore includerlo nel Autoloader.

Andrei con la "una versione adatti a tutti" e includi semplicemente qualsiasi dipendenza è necessaria.Non è necessario preoccuparsi di distribuire parti del software inutilizzate.Lo farai tutto il tempo, anche con le parti che pensi che gli utenti utilizzeranno.

Altri suggerimenti

Se vuoi condividere alcuni dei tuoi pacchetti dovresti svilupparli come vendibundles come quelli da terzi party.Pertanto, dovresti creare un repository di controllo della versione per ciascuno dei tuoi bundle e aggiungere un compositore.json per ogni fascio.Per rendere disponibili i tuoi bundle per il file del compositore symfony è necessario aggiungere il tuo URL della tua versioneControl come risorsa.Potrebbe sembrare qualcosa del genere:

"repositories": [
    {
        "type": "vcs"
        "url": "https://github.com/igorw/monolog"
    }
],
.

Happy CoDing :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top