Compositeur - à l'aide d'un référentiel local
Je suis un Compositeur débutant et je suis en train de faire un projet dépendant de l'autre, tandis que les deux projets n'existent que sur ma machine locale.
Le compositeur.json dans mon projet de bibliothèque (ProjectA) est:
{
"name" : "project/util",
"type" : "library"
}
J'ai initialisé git dans le dossier de base de ce projet.
Mon compositeur.json dans le projet en fonction sur le premier (Projetb):
{
"repositories": [
{
"name" : "util",
"type" : "git",
"url" : "/d/workspaces/util"
}
],
"require": {
"project/util" : "*"
},
}
Quand je lance composer install
de Projetb, j'obtiens l'erreur suivante:
[RuntimeException] Failed to clone , could not read packages from it fatal: repository '' does not exist
J'asume quelque chose de mal avec l'url du référentiel, mais je ne suis pas sûr de ce que d'autre à y écrire.
Vous devez vous connecter pour publier un commentaire.
Autoload local package à l'aide de compositeur (sans aller jusqu'à packagist chaque fois que vous changer).
Il existe de nombreuses façons de le faire, je vais être couvrant 2 d'entre eux:
Dans tous les cas, nous disposons de 2 parties principales:
- le forfait local (le code que nous ne voulons pas publier sur packagist pour être en mesure d'autoload dans notre projet, compositeur).
- le projet principal (le code de base que doit utiliser le code du package, peut être un autre paquet et ou de projets).
Méthode 1: (en direct de l'espace de noms)
Ouvrir le projet principal
composer.json
fichier et chargement automatique du forfait local des espaces de noms en utilisant une méthode quelconque (PSR-4, PSR-0, ...).exemple:
si dans le compositeur.json d'un forfait local, nous avons:
puis dans le compositeur.json de l'objectif principal du projet nous devrions avoir:
Avantages:
- vous n'avez pas touche le répertoire vendor (course compositeur de mise à jour par erreur ne sera pas annuler vos modifications locales)
- vous n'avez pas besoin de votre colis sur packagist utiliser
- vous travaillez dans un endroit (le forfait local) et les modifications sont automatiquement chargées dans le projet principal
Inconvénients:
- vous ne pouvez pas publier le compositeur.json sur la production (besoins d'édition avant de les publier pour exiger le réel paquet)
Méthode 2: (référentiel local)
Télécharger le package local à partir d'un référentiel local.
paquet:
1. initialiser git dans l'ensemble (même si vous ne voulez pas l'utiliser - pas besoin de commettre quoi que ce soit)
2. ajouter compositeur.fichier json. Dans le fichier, assurez-vous d'avoir les éléments suivants:
composer dump-autoload
projet principal:
1. modifier votre compositeur.json pour contenir les éléments suivants:
REMARQUE: chaque fois que vous faites le changement dans le forfait local (pas le vendeur) vous avez besoin de git commit ensuite, vous pouvez composer mise à jour de l'objectif principal du projet est d'avoir la dernière copie de l'opération pour le projet principal fournisseur de répertoire.
Avantage:
- vous ne touchez pas le vendeur de répertoire (course compositeur de mise à jour par erreur ne sera pas annuler vos modifications locales) - vous n'avez pas besoin de votre colis sur packagist utiliser
Inconvénient:
- vous avez à garder de commettre vos modifications (dans le package local), puis en exécutant compositeur de mise à jour dans le projet principal
- vous ne pouvez pas publier le compositeur.json sur la production (besoins d'édition avant de les publier pour exiger le réel paquet)
Je pense que vous avez juste la syntaxe de mal. Le type doit juste être VCS, puis compositeur chiffres ce type de VCS il est.
Dans votre projet B, l'entrée pour les dépôts doivent être:
Vous n'avez pas besoin de nom de quelle bibliothèque est disponible dans
/d/workspaces/util
. Compositeur va scanner le compositeur.fichier json dans ce répertoire et de savoir ce que le nom du projet est disponible ici, et d'utiliser le projet à partir de ce répertoire, de préférence à une version répertoriés sur packagist ou d'un autre dépositaire./d/workspaces/util
et non pas commed:/workspaces/util
?En plus de Danack la solution: Changer le chemin d'accès à partir de /d/d:/fonctionné pour moi.
Comme ceci: