Skip to main content

Publish binaries to npm, pypi, and github releases.

Project description

Bin Upload

Easily distribute binaries via npm, pypi, and GitHub releases.

bin-upload is a CLI tool built with Bun that packages and publishes pre-built binaries to multiple registries and platforms. It supports:

  • npm — Publishes a main package that depends on platform-specific binary packages using optionalDependencies.
  • PyPI — Builds wheel (.whl) packages for each platform-specific tag.
  • GitHub Releases — Creates releases and uploads archive assets (.tar.gz or .zip).

Full documentation.

Installation

NPM

# Globally
npm install -g @d-dev/bin-upload
# or as a package dep
npm install -D @d-dev/bin-upload
# or run with npx
npx @d-dev/bin-upload <command>

Python

pip install bin-upload
# or with UV
uv tool install bin-upload
# or run with uvx
uvx bin-upload <command>

GitHub Releases

Download the appropriate binary for your platform from the releases page.

Requirements

The following must be installed and available on your path.

  • npm: if publishing to npm
  • uv: if publishing to pypi

1. Init

bin-upload init

This will walk you through an interactive prompt and generate a bin-upload.config.yaml file.

More on configuration here.

2. Pack

Git flow

git add .
git commit -m "..."
git tag -a v1.0.0 -m "Release v1.0.0"
bin-upload pack

Non-git flow

bin-upload pack -s npm.packageJson.version=1.0.0 -s pypi.metadata.Version=1.0.0

This will generate artifacts in .bin-upload that can be published to npm (tarballs), pypi (wheel), and GitHub (tarballs and zips).

More on the pack command, including how to test artifacts prior to publishing, can be viewed here.

3. Publish

Create a .env file with the following tokens.

# NPM granular access token that bypasses 2FA
# https://docs.npmjs.com/about-access-tokens
NPM_TOKEN="YOUR NPM TOKEN"
# GitHub token with repository metadata read and
# contents write permissions
GITHUB_TOKEN="YOUR GITHUB TOKEN"
PYPI_TOKEN="YOUR PYPI TOKEN"

Git flow

git push origin main --follow-tags
bin-upload publish

Non-git flow

bin-upload publish

This publishes the artifacts generated by the pack command.

More on the publish command, including how to publish with GitHub actions, can be viewed here.

Verify

Once published, install from npm or PyPI and confirm:

# npm
npx YOUR_PACKAGE ...

# PyPI
uvx YOUR_PACKAE ...

Full documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

bin_upload-0.3.0-py3-none-win_arm64.whl (41.5 MB view details)

Uploaded Python 3Windows ARM64

bin_upload-0.3.0-py3-none-win_amd64.whl (43.3 MB view details)

Uploaded Python 3Windows x86-64

bin_upload-0.3.0-py3-none-musllinux_1_2_x86_64.whl (38.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

bin_upload-0.3.0-py3-none-musllinux_1_2_aarch64.whl (38.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

bin_upload-0.3.0-py3-none-manylinux_2_17_x86_64.whl (41.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

bin_upload-0.3.0-py3-none-manylinux_2_17_aarch64.whl (41.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

bin_upload-0.3.0-py3-none-macosx_11_0_arm64.whl (23.9 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

bin_upload-0.3.0-py3-none-macosx_10_9_x86_64.whl (25.8 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file bin_upload-0.3.0-py3-none-win_arm64.whl.

File metadata

  • Download URL: bin_upload-0.3.0-py3-none-win_arm64.whl
  • Upload date:
  • Size: 41.5 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bin_upload-0.3.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 7289e8e036364d3b1ab369c4e3b5dbe714b6ec3eaaa672095a12d3a0f3c4a5d9
MD5 249fb6ac122bc3824e1bc97dc9f377d9
BLAKE2b-256 ff7771e5fb71e944d044941406a1b4f0af0c0ffa7ffd8e2b8cb3f9211eefae5a

See more details on using hashes here.

File details

Details for the file bin_upload-0.3.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: bin_upload-0.3.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 43.3 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bin_upload-0.3.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 8ad91ce9e1129d29feffe35a1a61916ff5d813261f8beccec57e3cf9917b8125
MD5 aa341e9dfcd01bbe73d882ca3c5a7a5b
BLAKE2b-256 304b5fcf51d1b39ac1c895766a101ee9dc325037960851a2773634dadf33085c

See more details on using hashes here.

File details

Details for the file bin_upload-0.3.0-py3-none-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: bin_upload-0.3.0-py3-none-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 38.4 MB
  • Tags: Python 3, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bin_upload-0.3.0-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6fe026fbee650dfa27fa04057bfae48cb29ca6a9b65e5d7624ef3f37535750d1
MD5 8647987eab7db964dc3c8cdfd46dabc4
BLAKE2b-256 6ec7945e9cc649ba4565aa8a15493903fc94771759f8caf95c9a14e5a62c9709

See more details on using hashes here.

File details

Details for the file bin_upload-0.3.0-py3-none-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: bin_upload-0.3.0-py3-none-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 38.5 MB
  • Tags: Python 3, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bin_upload-0.3.0-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a64360aefdd9ea589b9a296f812f4e103080eba2d1dc8a238e818eba601169ae
MD5 13fc60899f6f0e5bccb5db4b446b1da4
BLAKE2b-256 25bc7ab08c902560881fce22f6d431a3f0449ac0fc2691e61877484784ed9201

See more details on using hashes here.

File details

Details for the file bin_upload-0.3.0-py3-none-manylinux_2_17_x86_64.whl.

File metadata

  • Download URL: bin_upload-0.3.0-py3-none-manylinux_2_17_x86_64.whl
  • Upload date:
  • Size: 41.1 MB
  • Tags: Python 3, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bin_upload-0.3.0-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 5a2758bdb567569c2905ee087f919bc7b346eaf2342aac801ee8cc14ceb0de2f
MD5 c09bf683694c7ced68b13ac4901f3cbb
BLAKE2b-256 3715245fafafb49288ece4e3d35ef96118105632615109b4309381fcadea9b13

See more details on using hashes here.

File details

Details for the file bin_upload-0.3.0-py3-none-manylinux_2_17_aarch64.whl.

File metadata

  • Download URL: bin_upload-0.3.0-py3-none-manylinux_2_17_aarch64.whl
  • Upload date:
  • Size: 41.1 MB
  • Tags: Python 3, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bin_upload-0.3.0-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 61836458fa898401c3655ef66325178bbbfa8e5304291445a6ee8c55e6b0d87a
MD5 165a948fb1245bd6322c18d059a21823
BLAKE2b-256 ac0c1c1b135d4d1df0b08d08ac108f8d20fd3a9263ae73631632f67f01fcf0c5

See more details on using hashes here.

File details

Details for the file bin_upload-0.3.0-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: bin_upload-0.3.0-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 23.9 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bin_upload-0.3.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b6d325db03bd565cb5379223d0914ae40a73c709e2305448307c12b479d350c5
MD5 50201e0ddd56253c4805bb3a8373be4d
BLAKE2b-256 1f463697c63220f009fc4fbac94e525d66b10acd2771248fedd38563785fd106

See more details on using hashes here.

File details

Details for the file bin_upload-0.3.0-py3-none-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: bin_upload-0.3.0-py3-none-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 25.8 MB
  • Tags: Python 3, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bin_upload-0.3.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 484b205ba3fd2e28667985b58dcdd4b1f1bfb3cfd1f7e14d4e087b0b3678275c
MD5 8703db7e3edee12327bd6f05ea971dd2
BLAKE2b-256 25164f9b7ab3a9a3780544f108181e89f7a0a3ca2678ac60eef5f772cb73e879

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page