Depend on a branch or tag using a git URL in a package.json?

前端 未结 5 1106
眼角桃花
眼角桃花 2020-11-29 15:49

Say I\'ve forked a node module with a bugfix and I want to use my fixed version, on a feature branch of course, until the bugfix is merged and released.

How would I

相关标签:
5条回答
  • 2020-11-29 16:25

    From the npm docs:

    git://github.com/<user>/<project>.git#<branch>
    
    git://github.com/<user>/<project>.git#feature\/<branch>
    

    As of NPM version 1.1.65, you can do this:

    <user>/<project>#<branch>
    
    0 讨论(0)
  • 2020-11-29 16:29

    If it helps anyone, I tried everything above (https w/token mode) - and still nothing was working. I got no errors, but nothing would be installed in node_modules or package_lock.json. If I changed the token or any letter in the repo name or user name, etc. - I'd get an error. So I knew I had the right token and repo name.

    I finally realized it's because the name of the dependency I had in my package.json didn't match the name in the package.json of the repo I was trying to pull. Even npm install --verbose doesn't say there's any problem. It just seems to ignore the dependency w/o error.

    0 讨论(0)
  • 2020-11-29 16:35

    If you want to use devel or feature branch, or you haven’t published a certain package to the NPM registry, or you can’t because it’s a private module, then you can point to a git:// URI instead of a version number in your package.json:

    "dependencies": {
       "public": "git://github.com/user/repo.git#ref",
       "private": "git+ssh://git@github.com:user/repo.git#ref"
    }
    

    The #ref portion is optional, and it can be a branch (like master), tag (like 0.0.1) or a partial or full commit id.

    0 讨论(0)
  • 2020-11-29 16:44

    On latest version of NPM you can just do:

    npm install gitAuthor/gitRepo#tag

    If the repo is a valid NPM package it will be auto-aliased in package.json as:

    { "NPMPackageName": "gitAuthor/gitRepo#tag" }

    If you could add this to @justingordon 's answer there is no need for manual aliasing now !

    0 讨论(0)
  • 2020-11-29 16:48

    per @dantheta's comment:

    As of npm 1.1.65, Github URL can be more concise user/project. npmjs.org/doc/files/package.json.html You can attach the branch like user/project#branch

    So

    "babel-eslint": "babel/babel-eslint",
    

    Or for tag v1.12.0 on jscs:

    "jscs": "jscs-dev/node-jscs#v1.12.0",
    

    Note, if you use npm --save, you'll get the longer git

    From https://docs.npmjs.com/files/package.json#git-urls-as-dependencies

    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.

    GitHub URLs

    As of version 1.1.65, you can refer to GitHub urls as just "foo": "user/foo-project". Just as with git URLs, a commit-ish suffix can be included. For example:

    { "name": "foo",
    "version": "0.0.0",
    "dependencies": { "express": "visionmedia/express", "mocha": "visionmedia/mocha#4727d357ea" } }

    0 讨论(0)
提交回复
热议问题