J'ai un module appelé 'sails-mongo' et je veux le mettre à jour vers la dernière version en utilisant la commande suivante:
npm update sails-mongo --save
J'ai également essayé de désinstaller puis de réinstaller. J'ai essayé sails-mongo@latest
et sails-mongo@beta
.
Problème : La version actuelle ( master ) sur GitHub le package.json ( https://github.com/balderdashy/sails-mongo/blob/master/package.json ) le fichier a:
"dependencies": {
"async": "~0.2.9",
"lodash": "~2.4.1",
"mongodb": "1.4.2",
"waterline-errors": "~0.10.0"
},
Et dans celui qui est mis à jour
"dependencies": {
"async": "0.2.10",
"underscore": "1.5.2",
"underscore.string": "2.3.3",
"mongodb": "~1.3.23"
},
La seule façon d'obtenir la branche principale est d'utiliser la commande npm install git+https://github.com/balderdashy/sails-mongo
Pourquoi sails-mongo@latest
installer la branche master?
Par défaut, les dépendances NPM sont extraites du référentiel NPM. Les auteurs doivent télécharger manuellement les nouvelles versions de leur logiciel dans le référentiel NPM, de sorte que le "@latest
"la version du code hébergé sur NPM est différente de la dernière version du code qui existe n'importe où (par exemple, sur GitHub).
Selon le référentiel NPM page d'informations sur Sails , la dernière version hébergée par NPM est 0.9.16
tandis que version actuelle de GitHub est 0.10.0-rc3
.
Si vous souhaitez que votre projet dépende d'une branche particulière ou de la validation d'un référentiel Git particulier (au lieu des versions hébergées sur le référentiel NPM), les développeurs NPM ont inclus un mécanisme explicite pour permettre cela, détaillé dans "- Git URL comme dépendances "dans le package.json
documents :
Git URL comme dépendances
Les URL Git peuvent être de la forme:
git://github.com/user/project.git#commit-ish git+ssh://user@hostname:project.git#commit-ish git+ssh://user@hostname/project.git#commit-ish git+http://user@hostname/project/blah.git#commit-ish git+https://user@hostname/project/blah.git#commit-ish
Le
commit-ish
peut être n'importe quelle balise, sha ou branche qui peut être fournie comme argument àgit checkout
. La valeur par défaut estmaster
.
En fait, il est encore plus facile de tiliser un dépôt Github.com comme dépendance:
Depuis la version 1.1.65, vous pouvez faire référence aux URL GitHub comme simplement
"foo": "user/foo-project"
. Par exemple:{ "name": "foo", "version": "0.0.0", "dependencies": { "express": "visionmedia/express" } }
Donc, pour utiliser le référentiel Sails GitHub, utilisez simplement:
"dependencies": {
"sails": "balderdashy/sails-mongo",
...
}
Et pour utiliser l'état exact de Sails tel qu'il existe sur GitHub au 28 avril 2014, utilisez:
"dependencies": {
"sails": "git://github.com/balderdashy/sails-mongo#b9cdce9a48",
...
}
J'ai eu un problème similaire. Via le registre NPM, j'essayais d'obtenir les dernières informations d'un projet dans GitHub, comme ceci:
//package.json
"devDependencies": {
"foo-package": "^3.3.0",
}
Mais le code que je suis revenu de npm install
(comme observé dans le node_modules/
dossier) n'était pas ce que j'ai vu dans la branche principale du référentiel GitHub. J'étais confus; car les deux ne correspondaient pas.
J'ai finalement trouvé: https://docs.npmjs.com/cli/view , qui révèle certaines informations (versions et dates) de ce que le registre NPM connaît pour un référentiel particulier.
// Console example
npm view foo-package
Après avoir confirmé que ce que je voulais de la branche principale du référentiel GitHub n'était pas dans le registre NPM, j'ai finalement changé mon approche Git URLs as Dependencies , tout comme @apsillers répond.