Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

npm install not installing latest version on GitHub

I have a module called 'sails-mongo' and I want to update it to the newest version using the following command:

npm update sails-mongo --save 

I also tried uninstall then install again. I tried sails-mongo@latest and sails-mongo@beta.

Problem: The current version (master) on GitHub the package.json (https://github.com/balderdashy/sails-mongo/blob/master/package.json) file has:

"dependencies": {   "async": "~0.2.9",   "lodash": "~2.4.1",   "mongodb": "1.4.2",   "waterline-errors": "~0.10.0" }, 

And in the one being updated

"dependencies": {   "async": "0.2.10",   "underscore": "1.5.2",   "underscore.string": "2.3.3",   "mongodb": "~1.3.23" }, 

The only way I get the master branch is using the command npm install git+https://github.com/balderdashy/sails-mongo

Why doesn't sails-mongo@latest install the master branch?

like image 419
user2867106 Avatar asked Apr 28 '14 10:04

user2867106


People also ask

Can npm install from GitHub?

The npm installation from GitHub is quite useful for testing packages. It also gives the flexibility to install any specific branch, version, tag, and so on.

How do I use npm on GitHub?

To npm install a public project that is hosted on Github, and not the NPM registry, add the Github repo to package. json dependencies using the username/repo#branch-name format. Run npm install and npm will download the project and save it into your /node_modules/ folder.

Why is my npm install not working?

If your npm is broken: On Mac or Linux, reinstall npm. Windows: If you're on Windows and you have a broken installation, the easiest thing to do is to reinstall node from the official installer (see this note about installing the latest stable version).


1 Answers

By default, NPM dependencies are pulled from the NPM repository. Authors must manually upload new versions of their software to the NPM repository, so the "@latest" version of the code hosted on NPM is different from the latest version of the code that exists anywhere (e.g., on GitHub).

According to the NPM repository's info page on Sails, the latest NPM-hosted version is 0.9.16 while the current GitHub version is 0.10.0-rc3.

If you want to have your project depend upon a particular branch or commit of a particular Git repo (instead of the version(s) hosted on the NPM repository), the NPM developers have included an explicit mechanism to allow this, detailed in "Git URLs as Dependencies" in the package.json docs:

Git URLs as Dependencies

Git urls can be of the form:

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 

The commit-ish can be any tag, sha, or branch which can be supplied as an argument to git checkout. The default is master.

In fact, it's easier still to use a Github.com repo as a dependency:

As of version 1.1.65, you can refer to GitHub urls as just "foo": "user/foo-project". For example:

{   "name": "foo",   "version": "0.0.0",   "dependencies": {     "express": "visionmedia/express"   } } 

So, to use the Sails GitHub repo, simply use:

"dependencies": {   "sails": "balderdashy/sails-mongo",   ... } 

And to use the exact state of Sails as it exists on GitHub as of April 28, 2014, use:

"dependencies": {   "sails": "git://github.com/balderdashy/sails-mongo#b9cdce9a48",   ... } 
like image 177
apsillers Avatar answered Sep 19 '22 22:09

apsillers