web-dev-qa-db-fra.com

Comment enregistrer un package git local dans Bower?

Comment puis-je enregistrer un package git local dans bower?

Mon component.json actuel est le suivant

{
  "name": "myproject",
  "version": "1.0.0",
  "dependencies": {
    "jquery": "1.8.0",
    "Twitter/bootstrap": "2.1.1"
  }
}

Cependant, je voudrais également ajouter un package que j'ai créé à C:/mypackage qui est un dépôt git avec des versions balisées. Quand je fais bower install --save C:/mypackage il l'ajoute correctement au projet mais ne l'ajoute pas à mon component.json.

J'essaie bower register mypackage C:/mypackage mais ça continue de me donner

bower error Incorrect format

Qu'est-ce que je fais mal?

61
user391986

Option 1: enregistrement public Bower

Bower est conçu principalement pour partager du code public (côté client) de manière "sans opinion". Le cas d'utilisation principal est donc d'avoir un référentiel accessible au public (sur GitHub) qui est registerd avec un nom et une URL de référentiel git. Je viens de le faire moi-même:

bower register linksoup git://github.com/automatonic/linksoup

Ceci indique simplement au serveur Bower que lorsque vous install linksoup pour aller chercher le code dans le git://github.com/automatonic/linksoup référentiel et placez-le dans le répertoire component du projet local.

Si c'est ce que vous voulez faire, alors configurez simplement un référentiel sur github/etc., Poussez votre code là, puis register avec les informations du référentiel résultant.

Option 2: dépendance privée

Il existe de nombreuses raisons de ne pas publier votre code dans un référentiel accessible au public. Il peut ne pas être open source, etc. si votre code mypackage n'est pas destiné à être public, alors vous ne devriez probablement pas le registering sur le serveur public bower ... De plus, même si vous pourriez register un répertoire local, cela ne fonctionnerait que sur votre machine ... ce qui va à l'encontre du but de partager le code via bower.

Si vous voulez juste que Bower gère une dépendance locale et privée, alors je vais me débarrasser de la solution blockhead's :

{
  "name": "myproject",
  "version": "1.0.0",
  "dependencies": {
    "jquery": "1.8.0",
    "Twitter/bootstrap": "2.1.1",
    "mypackage": "file:///path/to/mypackage/.git"
  }
}

Cela signifie simplement que myproject a besoin de mypackage, et d'utiliser git clone pour le récupérer. Je suppose que cela peut utiliser tout ce que git peut comprendre (y compris les référentiels locaux). Mais vous devez noter que cela peut entraîner des problèmes pour toute autre personne travaillant sur ce code qui ne peut pas accéder à votre chemin local.

Meilleure estimation

Il me semble que vous avez pu supposer que bower register était une opération locale (expliquant à bower comment trouver une dépendance via une sorte de registre local). Pour autant que je sache, ce n'est qu'un enregistrement à distance et public, c'est pourquoi cela n'est pas pris en charge.

Vous cherchez peut-être aussi un moyen de faire quelque chose comme une opération de liaison avec npm . Autrement dit, travaillez sur un module de dépendance sans que votre cycle de développement ne comporte toujours une publication.

Un petit détail sur le nombre de personnes impliquées et ce que vous essayez d'accomplir faciliterait une réponse plus ciblée.

71
el2iot2

Vous pouvez ajouter n'importe quel référentiel git comme suit:

{
  "name": "myproject",
  "version": "1.0.0",
  "dependencies": {
    "jquery": "1.8.0",
    "Twitter/bootstrap": "2.1.1",
    "myrepo":"git://myrepo.com/myrepo"
  }
}
53
blockhead

Vous pouvez utiliser bower link:

La fonctionnalité de lien permet aux développeurs de tester facilement leurs packages. La liaison est un processus en deux étapes.

En utilisant bower link dans un dossier de projet créera un lien global. Ensuite, dans un autre package, bower link <pkg> créera un lien dans le dossier des composants pointant vers le lien créé précédemment.

Cela permet de tester facilement un package car les modifications seront immédiatement reflétées. Veuillez noter que bower ne récupérera pas les dépendances du package lié.

Bower écrasera le lien lors de l'installation/mise à jour.

33
Ali Shakiba

La grande idée avec bower est de partager facilement les dépendances de vos projets. Donc l'utilisation du dépôt local devrait être limitée aux tests .

Une fois que vous comprenez cela, vous devez savoir qu'il n'est pas - strictement - nécessaire de register votre paquet pour l'utiliser comme dépendance.

Cela est dû au fait que la dépendance de bower peut spécifier soit un version, un dossier ou un package. Donc vous pouvez utiliser le dépôt local .

Définir comme paquet de tonnelle

Vous devrez d'abord définir votre dépendance en tant que package Bower :

# create the bower package
cd /path/to/you-need-me
bower init
# answer questions…

Ajouter en tant que dépendance de projet

Ensuite, dans votre projet principal, celui qui a besoin du you-need-me dépendance, modifier bower.json fichier à ajouter (ou développer):

  "dependencies": {
    …
    "you-need-me":  "file:///path/to/you-need-me/.git/"
    "you-need-me-windows":  "C:/path/to/you-need-me-windows/.git/"
  }

Vous ne donnez donc pas de version, mais un point de terminaison git local, c'est-à-dire le sous-répertoire .git/.

Installer la dépendance

Dans le projet man, installez les dépendances de bower avec:

cd /path/to/main-project/
bower install

Failure

bower you-need-me#*              ENOTFOUND Package /path/to/you-need-me/ not found

Vérifiez à nouveau votre chemin et que vous pointez sur le .git/ répertoire de votre dépendance.

Succès

Vous devriez obtenir quelque chose comme:

bower you-need-me#*             not-cached file:///path/to/you-need-me/.git/#*
bower you-need-me#*                resolve file:///path/to/you-need-me/.git/#*
bower you-need-me#*               checkout master
bower you-need-me#*               resolved file:///path/to/you-need-me/.git/#b18c753c6f
bower you-need-me#*                install you-need-me#b18c753c6f

Écrivez une entrée de blog à ce sujet: Test de bower.json localement avant d'enregistrer le package .

23
Édouard Lopez