gitpkg icon indicating copy to clipboard operation
gitpkg copied to clipboard

semver ranges and "gitpkg:^1.0.0" dep definition sugar

Open ramasilveyra opened this issue 8 years ago • 1 comments

idea/discussion: just thinking aloud, comment whatever you think that could be wrong or could be improved.

Long git tags are awful:

{
  "dependencies": {
    "some-package": "github:ramasilveyra/private-registry#some-package-v1.0.0-gitpkg"
  }
}

maybe instead we could use the gitpkg: shortcut that infers the gitpkg registry from the field gitpkg.registry:

{
  "dependencies": {
    "some-package": "gitpkg:^1.0.0"
  },
  "gitpkg": {
    "registry": "[email protected]:ramasilveyra/private-registry.git"
  }
}

even we could have multiples gitpkg registries:

{
  "dependencies": {
    "some-package": "gitpkg:private:^1.0.0",
    "other-package": "gitpkg:public:^1.0.0"
  },
  "gitpkg": {
    "registries": {
      "private": "[email protected]:ramasilveyra/private-registry.git",
      "public": "[email protected]:ramasilveyra/public-registry.git"
    }
  }
}

For semver ranges if we can make the git tag name to be the same of the package even for scoped packages (see https://github.com/ramasilveyra/gitpkg/issues/4) the work on the npm client will be:

  1. List git tags using ls-remote.
  2. Select the correct version.
  3. Fetch.

ramasilveyra avatar Jun 29 '17 03:06 ramasilveyra

We can use the npm scripts preinstall and postinstall to transform the custom gitpkg semver syntax to git deps syntax. Eg: gitpkg:private:^1.0.0 => [email protected]:ramasilveyra/private-registry.git#some-package-v1.5.0-gitpkg

ramasilveyra avatar Jul 21 '17 15:07 ramasilveyra