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

@jsii-code-samples/jsii-release

v0.1.10

Published

Release jsii modules to multiple package managers

Downloads

4

Readme

jsii-release

This library includes a set of programs that can be used to release multiple modules into various package managers.

These scripts where extracted from aws-delivlib, which is used to release jsii and the AWS CDK.

Usage

This is an npm module. You can install it using yarn add jsii-release or npm install jsii-release. In most cases it will be installed as a devDependency in your package.json.

This tool expects to find a distribution directory (default name is dist) which contains "ready-to-publish" artifacts for each package manager. This structure is compatible with jsii-pacmak:

  • dist/js/*.tgz - npm tarballs
  • dist/python/*.whl - Python wheels
  • dist/nuget/*.nupkg - Nuget packages
  • dist/java/** - Maven artifacts in local repository structure

Each publisher needs a set of environment variables with credentials as described below (NPM_TOKEN, TWINE_PASSWORD etc).

Then:

$ jsii-release

You can customize the distribution directory through jsii-release DIR (the default is dist)

This command will discover all the artifacts based on the above structure and will publish them to their respective package manager.

You can also execute individual publishers:

  • jsii-release-maven
  • jsii-release-nuget
  • jsii-release-npm
  • jsii-release-pypi

npm

Publishes all *.tgz files from DIR to npmjs or GitHub Packages.

Usage:

npx jsii-release-npm [DIR]

DIR is a directory with npm tarballs (*.tgz). Default is dist/js.

Options (environment variables):

|Option|Required|Description| |------|--------|-----------| |NPM_TOKEN|Required|Registry authentication token (either npm.js publishing token or a GitHub personal access token)| |NPM_REGISTRY|Optional|The registry URL (defaults to "registry.npmjs.org"). Use "npm.pkg.github.com" to publish to GitHub Packages| |NPM_DIST_TAG|Optional|Registers the published package with the given dist-tag (e.g. next, default is latest)|

Maven

Publishes all Maven modules in the DIR to Maven Central.

Usage:

npx jsii-release-maven [DIR]

DIR is a directory with a local maven layout. Default is dist/java.

Options (environment variables):

|Option|Required|Description| |------|--------|-----------| |MAVEN_USERNAME and MAVEN_PASSWORD|Yes|Username and password for Maven Central obtained from Sonatype. You will need to Create JIRA account and then request a new project| |MAVEN_GPG_PRIVATE_KEY or MAVEN_GPG_PRIVATE_KEY_FILE and MAVEN_GPG_PRIVATE_KEY_PASSPHRASE|Yes|GPG private key or file that includes it. This is used to sign your Maven packages. See instructions below| |MAVEN_STAGING_PROFILE_ID|Yes|Maven Central (sonatype) staging profile ID (e.g. 68a05363083174). Staging profile ID can be found in the URL of the "Releases" staging profile under "Staging Profiles" in https://oss.sonatype.org (e.g. https://oss.sonatype.org/#stagingProfiles;11a33451234521| |MAVEN_DRYRUN|No|Set to "true" for a dry run|

How to create a GPG key?

Install GnuPG.

Generate your key (use RSA, 4096, passphrase):

$ gpg --gen-key

Your selected passphrase goes to MAVEN_GPG_PRIVATE_KEY_PASSPHRASE.

Export and publish the public key:

$ gpg -a --export > public.pem

Go to https://keyserver.ubuntu.com/ and submit the public key

Export and the private key:

$ gpg -a --export-secret-keys <fingerprint> > private.pem

Now, either set MAVEN_GPG_PRIVATE_KEY_FILE to point to private.pem or export the private key to a single line where newlines are encoded as \n and then assign it to MAVEN_GPG_PRIVATE_KEY:

$ echo $(cat -e private.pem) | sed 's/\$ /\\n/g' | sed 's/\$$//'

Maven (GitHub Packages)

Publishes all Maven modules in the DIR to [GitHub Packages]https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-apache-maven-for-use-with-github-packages).

Usage:

npx jsii-release-maven [DIR]

DIR is a directory with a local maven layout. Default is dist/java.

Options (environment variables):

|Option|Required|Description| |------|--------|-----------| |MAVEN_GITHUB|Yes|Set to "true" to push to GitHub Packages| |MAVEN_ENDPOINT|Yes|Use "https://maven.pkg.github.com/OWNER/REPOSITORY" to publish to GitHub Packages (replace 'OWNER' with GitHub organization name or username and 'REPOSITORY' is repository name)| |MAVEN_DRYRUN|No|Set to "true" for a dry run|

NuGet

Publishes all *.nupkg to the NuGet Gallery.

Usage:

npx jsii-release-nuget [DIR]

DIR is a directory with Nuget packages (*.nupkg). Default is dist/dotnet.

Options (environment variables):

|Option|Required|Description| |------|--------|-----------| |NUGET_API_KEY|Required|NuGet API Key with "Push" permissions| |NUGET_SOURCE|Optional|The NuGet server URL (defaults to "https://api.nuget.org/v3/index.json"). Use "https://nuget.pkg.github.com/OWNER/index.json" to publish to GitHub Packages (replace 'OWNER' with GitHub organization name or username)|

PyPI

Publishes all *.whl files to PyPI.

Usage:

npx jsii-release-pypi [DIR]

DIR is a directory with Python wheels (*.whl). Default is dist/python.

Options (environment variables):

|Option|Required|Description| |------|--------|-----------| |TWINE_USERNAME|Required|PyPI username (register)| |TWINE_PASSWORD|Required|PyPI password|

Roadmap

  • [ ] Support GitHub Packages for Maven & NuGet (npm is already supported)

License

Released under the Apache 2.0 license.