Supposons que j'ai écrit un module pour Node.js que je voudrais garder privé. Je sais que je peux (dois) ajouter la ligne:
"private": "true"
au package.json
fichier, et je sais aussi que je peux npm install
utiliser ce module en utilisant un chemin d'accès au système de fichiers ou un lien vers un référentiel git, y compris GitHub.
Je sais aussi que je peux mettre un tel chemin de système de fichiers ou un lien vers un dépôt git package.json
, afin que la dependencies
partie ressemble un peu à ceci:
"dependencies": {
"myprivatemodule": "[email protected]:..."
}
Ce que je veux maintenant, ce n'est pas un lien vers la dernière version, mais vers une version spécifique. La seule possibilité que je connaisse est de créer un lien vers un commit spécifique en utilisant son ID. Mais c'est beaucoup moins lisible et pire maintenable que d'utiliser un numéro de version tel que 0.3.1
.
Ma question est donc la suivante: est-il possible de spécifier un tel numéro de version de toute façon et de demander à npm de rechercher dans le référentiel git le dernier commit qui inclut cette version?
Sinon, comment résolvez-vous ce problème dans vos projets? Vivez-vous avec des ID de validation ou existe-t-il une meilleure solution à cela?
git tag -a "1.0.0"
et pousségit push --tags
, puis j'ai ajouté le#v1.0.0
à la fin de lagit+ssh
dépendance. Maisnpm update
rien ne se passe.v
était nécessaire. Après le#
, le fragment doit correspondre au nom complet de l'étiquette (ou autre commitsh ) - dans votre cas,#1.0.0
.npm i {owner}/{project}#{tag}
ou ajouter"{library}": "github:{owner}/{project}#{tag}"
à package.json au lieu d'utiliser[email protected]
ougit://github.com
La réponse acceptée n'a pas fonctionné pour moi. Voici ce que je fais pour extraire un paquet de github:
Ou en l'ajoutant manuellement sur package.json:
la source
"package": "git+https://github.com/username/package.git#commit"
#tag
ce qui pointe généralement vers un numéro de versiongit tag -a v1.0.1 && git push --tag && git push
comme @Jonathan Lonowski l'a également dit dans un commentaire.Si par version vous entendez une balise ou une version, alors github fournit des liens de téléchargement pour ceux-ci. Par exemple, si je veux installer la version 0.3.2 de fetch (elle n'est pas disponible sur npm), alors j'ajoute à mon
package.json
sousdependencies
:Le seul inconvénient par rapport à l'approche de hachage de validation est qu'un hachage est garanti de ne pas représenter le code modifié, alors qu'une balise pourrait être remplacée. Heureusement, cela arrive rarement.
Mettre à jour:
Ces jours-ci, l'approche que j'utilise est la notation compacte pour une dépendance servie GitHub:
Où commit peut être n'importe quoi, comme une balise. Dans le cas de GitHub, vous pouvez même supprimer l'initiale
github:
car c'est la valeur par défaut.la source
Mon exemple de commentaire à @qubyte ci-dessus a été haché, alors voici quelque chose de plus facile à lire ...
La méthode @surjikal décrite ci - dessus fonctionne pour les commits de branche, mais cela n'a pas fonctionné pour un commit d' arbre que j'essayais d'inclure.
Le mode archive fonctionne également pour les commits. Par exemple, récupérez @ a2fbf83
npm :
fil :
format :
Voici le commit d' arborescence qui nécessitait le
/archive/
mode:pour le commit vuex associé
la source
Cette commande installe le package npm à
username/package
partir d'un commit git spécifique:Voici les
3d0a21cc
8 premiers caractères du hachage de validation.la source
Je décris ici un problème auquel j'ai été confronté lors de l'exécution
npm install
- le package n'apparaît pas dansnode_modules
.Le problème était que la
name
valeurpackage.json
du package installé était différente du nom du package importé (entréepackage.json
de mon projet).Donc , si votre nom de projet est installé
some-package
(valeur de nom dans sonpackage.json
) puis danspackage.json
votre écriture de projet:"some-package": "owner/some-repo#tag"
.la source
name
exigence n'est pas souvent mentionnée sur le net .. (pas que je pourrais m'engager là-dedans, du moins).npm install --save git+https://<remote-github-repo-url>
c'était un moyen assez sûr de ne plus toucher à ce problème à l'avenir.J'avais besoin d'exécuter deux versions de tfjs-core et trouvé que les deux devaient être construits après avoir été installés.
package.json:
Ensuite:
Et enfin, pour utiliser les bibliothèques:
Cela a très bien fonctionné mais est très certainement #hoodrat
la source
Si vous faites cela avec plus d'un module et que vous souhaitez avoir plus de contrôle sur les versions, vous devriez envisager d'avoir votre propre registre npm privé.
De cette façon, vous pouvez npm publier vos modules dans votre registre npm privé et utiliser les entrées package.json de la même manière que vous le feriez pour les modules publics.
https://docs.npmjs.com/files/package.json#dependencies
la source