2017-08-11 4 views
1

Je cherche un moyen d'ajouter des espaces de noms à la section PSR-4 autoload du fichier composer.json de mon projet Laravel, du interface de ligne de commande.Ajouter un espace de noms à la section PSR-4 dans le fichier composer.json à partir de l'interface de ligne de commande

{ 
    "autoload": { 
    "psr-4": { 
     "App\\": "app/", 
     "Modules\\": "modules/", 
     /* add more here */ 
    } 
    } 
} 

J'espérais il y a une commande comme composer require, mais je ne l'ai pas trouvé une commande de travail pour cette occasion.

Quelqu'un at-il trouvé une solution appropriée pour cela? Un code pour bash, powershell, php, ... serait apprécié. Être capable de l'exécuter à partir de la ligne de commande est la chose principale.

+0

Pourquoi auriez-vous besoin d'une commande pour cela? À quelle fréquence allez-vous ajouter de nouveaux espaces de noms? – Marwelln

+0

Pour déployer automatiquement une configuration pour un environnement de développeur. – MrMAG

+0

Nous n'écrirons pas de script pour vous, mais un moyen simple et efficace serait d'utiliser 'json_decode()' pour convertir le contenu de composer.json en tableau, ajouter la définition de l'espace de noms, et 'json_encode()' tableau ajusté à nouveau json. Ce script est simplement rendu exécutable en utilisant 'php script.php', dans votre ligne de commande. –

Répondre

3

Si quelqu'un a besoin de ce,
je suis venu avec cette approche, qui travaille pour moi.

public function handle($key, $namespace, $output = 'composer.json') 
{ 
    $file = 'composer.json'; 
    $data = json_decode(file_get_contents($file), true); 
    $data["autoload"]["psr-4"][] = array($key => $namespace); 
    file_put_contents($output, json_encode($data, JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT)); 
}