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.2.0-py3-none-win_arm64.whl (41.5 MB view details)

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

bin_upload-0.2.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.2.0-py3-none-manylinux_2_17_aarch64.whl (41.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

bin_upload-0.2.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.2.0-py3-none-win_arm64.whl.

File metadata

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

File hashes

Hashes for bin_upload-0.2.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 01ef893d0b2b4da07028677c7db1c5df6bab076f3b9b5bff3bf9c3b36b1eed88
MD5 39c76871e135228bd39cec9905b6c7bb
BLAKE2b-256 998e69ceb68939d9388a1b321f4de5ac306d7b25d2d55318460b08a47b2fe94a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for bin_upload-0.2.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e0d8472b1a2179bf66e235c518cda9a23680b3eaeb1c9abf1be0fc1b482e9755
MD5 5b65cfe26a979c42f87d9074db4c61dd
BLAKE2b-256 a927c959d4cad887ebf4449567eb9c10781943083b03e77b1e73e69b14b0173e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.2.0-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? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for bin_upload-0.2.0-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9a9224aef1a23b652d2d29d6876b566296ae7bd6408b9b54647ac42c17cd9ed2
MD5 e320af191999808d588a6709bf0c2ca7
BLAKE2b-256 c2555ed894d3ca5039613f64752e60691389844d79ea0e6a881995b08bbe2da9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.2.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? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for bin_upload-0.2.0-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a0f93638acacf2e52f3ac04ab4b7d4af0eb96530f6fbbc24c3fe0c11161b9eee
MD5 696ce15ac86ccadb1d1455af3f62a232
BLAKE2b-256 4225a31e8d5270abdf8e08fbf727725fa92daa4e5ee6ed7df9e266dcc2a7f5a7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.2.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? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for bin_upload-0.2.0-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 28fc3341d84f1c6bb6460ec7c4bfe42dd6ac285db70a81611401f63979a15d0d
MD5 d4e392f824b9ccf43f0ca1317495eb10
BLAKE2b-256 5734a5bef8d4cdb6da280b2e61558f020980ebca3224bba5f57c61b6e0e39d9b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.2.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? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for bin_upload-0.2.0-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 0d73eb52d1a51c952f46eae830456fb9ad45a04f50b102c3e1370ab8ddd701cd
MD5 9dbe2b68f8a74da02b5c2b44c0c470ba
BLAKE2b-256 99c054d6ad57fc717911139ab2360498bad8bdae38d455a482a14c6778b88a0e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.2.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? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for bin_upload-0.2.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5cee5427741f34c97d2b438a9bb1401974f3d4e81444b12fdcabc91f0c775547
MD5 ac592114f3b2a410efc4e8d983939b14
BLAKE2b-256 45831c2a8dec60942cb12e9ba5a218a330f5806d341f270a694b8046c4be21d4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.2.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? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for bin_upload-0.2.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8c84618c4817c92671339eb411d852efdbc4f38bbf0d4cdf8835756800746888
MD5 d76834e7639757e51a4c1d33fb368356
BLAKE2b-256 cef1fff346a708c6052a30d4b41646cb71070c13c400b8c05035419f92b6951e

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