Last Updated: June 22, 2017
·
34.8K
· ierceg

Fork and patch npm moduels hosted on GitHub

I have read How to fork & patch npm modules and followed the instructions but I couldn't make it work for me. Looking at npm log I figured that the problem was with zip files being downloaded and not tarballs. So here's the trick on how to include your GitHub repository correctly in npm:

  1. Go to fork's page
  2. On the right side of the page you will find "Download ZIP" button (or whatever it is that you are seeing). Right-click on it and copy the link it points to. It should be something like https://github.com/SoftwareMarbles/jugglingdb/archive/master.zip.
  3. Edit the link's URL replacing archive with tarball and removing the .zip extension. You should end up with something like https://github.com/SoftwareMarbles/jugglingdb/tarball/master.
  4. Paste that into your package.json instead of the package's version:
"jugglingdb": "https://github.com/SoftwareMarbles/jugglingdb/tarball/master"

And that's it - npm install works as it should and installs the module from the link.

You can do the same for a particular commit (and actually this is what originally this protip recommended):

  1. Go to fork's page
  2. Go to commits
  3. On the right side of the commit you want to use click "Browse code"
  4. On the browse code page right-click on "Download ZIP" button (or whatever it is that you are seeing) and copy . It should be something like this https://github.com/SoftwareMarbles/express-jsend/archive/fdd4089087d916fa6e3b5abaa1ff9dd9ea96df8d.zip.
  5. Edit that URL replacing archive with tarball and removing the .zip extension. You should end up with something like https://github.com/SoftwareMarbles/express-jsend/tarball/fdd4089087d916fa6e3b5abaa1ff9dd9ea96df8d.
  6. Paste that into your package.json instead of the version. Like this:
"express-jsend": "https://github.com/SoftwareMarbles/express-jsend/tarball/fdd4089087d916fa6e3b5abaa1ff9dd9ea96df8d"

1 Response
Add your response

You can also reference the package via git tag.

watsoncj/connect-session-sequelize has tag 1.0.1

package.json:

"connect-session-sequelize": "https://github.com/watsoncj/connect-session-sequelize/archive/1.0.1.tar.gz",
over 1 year ago ·