npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@r1tsu/gitpkg

v1.0.0-beta.10

Published

Publish packages as git tags

Downloads

8

Readme

Both npm and yarn support installing packages from git tags.

But things can get difficult with packages that have a build step (eg babel) and monorepos with multiples packages (eg lerna).

gitpkg publish creates a git tag with the same files as if you were running npm publish or yarn publish and uploads the generated git tag to a git repository.

Also you can publish any gitpkg package to the same repository, so you can have only one repository used as common registry and you get away from your project git repository the git tags with the build code.

Terminology:

  • gitpkg package: git tag generated by gitpkg.
  • gitpkg registry: git repository used as common host for your gitpkg packages.

Node.js v10.12 or newer is required.

npm registry

Via the yarn client:

$ yarn global add gitpkg

Via the npm client:

$ npm install -g gitpkg

gitpkg registry

Via the yarn client:

$ yarn global add ramasilveyra/public-registry#gitpkg-v1.0.0-beta.2-gitpkg

Via the npm client:

$ npm install -g ramasilveyra/public-registry#gitpkg-v1.0.0-beta.2-gitpkg

Publish

Publishes a package to a git repository, by default uploads the package to the git repository in the git remote origin (git remote -v to see your git remote origin url). The package published is defined by the package.json in the current directory.

$ gitpkg publish

See in action.

--registry, -r

$ gitpkg publish --registry [email protected]:org/private-registry.git

This flag tells gitpkg to publish the package to a specific gitpkg registry.

You can also set the gitpkg registry permanently by adding "gitpkg":{"registry":"[email protected]:org/private-registry.git"} to the package.json.

You can also configure gitpkg with a config file. Create a file named gitpkg.config.js in the root of your project or in the root of a subpackage.

Available config settings

registry

Publish the package to a specific gitpkg registry. Same as the registry flag of the cli.

getTagName

Function used to create the git tags. The function receives one object pkg, which is the content of the package.json file.

// Example content of gitpkg.config.js
module.exports = () => ({
  registry: '[email protected]:org/private-registry.git',
  getTagName: pkg => `${pkg.name}-v${pkg.version}-gitpkg`
});

Usage with Gerrit

gitpkg works by publishing tags that contain only the files in a package. The commits in these tags don't appear on any branch, so Gerrit will reject them by default:

! [remote rejected] …
    (prohibited by Gerrit: update for creating new commit object not permitted)

To gain the permission gitpkg needs, add Create Reference and Push entries to the refs/tags/* reference in the Access settings of your repository.

Feel free to dive in! Open an issue or submit PRs.

gitpkg follows the Contributor Covenant Code of Conduct.

MIT © Ramiro Silveyra d'Avila