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.1.1-py3-none-win_amd64.whl (43.3 MB view details)

Uploaded Python 3Windows x86-64

bin_upload-0.1.1-py3-none-musllinux_1_2_x86_64.whl (38.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

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

Uploaded Python 3manylinux: glibc 2.17+ x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

bin_upload-0.1.1-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.1.1-py3-none-win_amd64.whl.

File metadata

  • Download URL: bin_upload-0.1.1-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.1.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 dca08264499b4a5c829f1c1dc8beedb73f82c17f05bd0f279429491fa4e77648
MD5 98eefa314c10b0cd0eb3cc34110902da
BLAKE2b-256 4d5e051e5ddff717eeb4605fed6125eb1ba0c7d64d315631a1f355dcb3cfd7b3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.1.1-py3-none-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 38.5 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.1.1-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3cc60d992092c8588b636e198393d5d5dd81d607685411c3093044b6d7109d8a
MD5 9a110149208f4cf717186bd620ed4472
BLAKE2b-256 7d9f62ef691ec3c794071a3ebb0d6266b9b7e94ef8980748824b2af241ca7fb2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.1.1-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.1.1-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3b0f43b329489b9f86dcb0c779e7c45946ed56c8ee310603d1b52e3d8a892d3f
MD5 c8966360a67115a9d9eb3d443e2cd99b
BLAKE2b-256 adead492fb4f38770099ae5f37efd8f44b7c52d8612b710c6bc454d1369efbee

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.1.1-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.1.1-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 a79c339cf5fc289fad6813ead3dc5758e1efd7beb82d1f3afbf69f834704cf33
MD5 f80b43a44afc62b02297b1f712032fe8
BLAKE2b-256 a82aa7aa06d65b182cb7f83f5ee101fac321263a3ebc1702a1ee91e1f1465aa8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.1.1-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.1.1-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 4ce5f3efebd9e5e94265da21830b91e0fd0e3f93467f1218c7fe1ac0588f92e9
MD5 297623bea8a0ce0d16dfd0b25cdc2b6d
BLAKE2b-256 dfc917354f24358bd7b30552fa72045f1574492626aba794412d315acf5fb023

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.1.1-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.1.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8227274774e28cd48463905ccb117dd9ff0866a847e7196482c3214bf859006e
MD5 3d8985cadc6d8fca730beeff4a1308ef
BLAKE2b-256 2a214e4307f404502ac78a9538f070067be8ce364415ad6aa1d198fcada399ab

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.1.1-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.1.1-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 47fa8ab093aeccf0d2dceb0e95473e7778faa9a9f2bbd119545a32a956e920d5
MD5 6900afc96b9a39c68cb5490890011af7
BLAKE2b-256 42e91156410988a3fff397ec4d6f6c9e078dd258e83f46f049bbf1d185321add

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