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

Uploaded Python 3Windows x86-64

bin_upload-0.1.2-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.2-py3-none-musllinux_1_2_aarch64.whl (38.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

bin_upload-0.1.2-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.2-py3-none-win_amd64.whl.

File metadata

  • Download URL: bin_upload-0.1.2-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.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 910ead76a2245399b1c50a96ab701d9d6004b64f53eae15e5fd52df53eeebd7a
MD5 ea3103cf8ddbf45a1e867d4fec2f6164
BLAKE2b-256 551dccae190370677b67ca5bfd282c8379dfdf432abef69733b513d8dbeca447

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.1.2-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.2-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6e5255c4b087760dbd6788bfa07d9eeed324a6b0161876e6dec7ce345832125e
MD5 cd2212df0ca596c75ce81ac0ac73787f
BLAKE2b-256 ef41b5cdcd8fb11c4456c0549c4373ef3a5eb82ff6ea05ad267f321ee4c6cac6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.1.2-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.2-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9f9461876da561a7b8848a938ff063fab333c15bc4f4fceaa0afb1023c187760
MD5 e18839e03884a268cd98d559e98125ef
BLAKE2b-256 908a515e490d519b594a87e50327a77228ac3d9cfdb40a13c46bad1471f0192d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.1.2-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.2-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 63484969b9ebeed16cda3cf408a594dd3560ac1ab3d989820453382b0a015613
MD5 7a20d215c2dfa72682d11f4ca73e0113
BLAKE2b-256 096ad97a1235c5dd1d3eaca8220a30a8b43cb48cbe769db50c92b675fd468ede

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.1.2-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.2-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 e21d493e06a2c39213e6f9a762bb4e9227d11bdc3204d51bd387a07c791078df
MD5 9e6c9ea1b220e09766ee433cf81e36da
BLAKE2b-256 7d06e245682866501e8c83657778ef4029eed96d7f6c8b4890e686e4897134b2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.1.2-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.2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 42ddaa1e4cfb379552f9d4f1b7516617b0afd57917f8fe30208d971c4d3e7874
MD5 49da854d23232d85ac978c4e14b4ad91
BLAKE2b-256 897cd85f6a0cb76313d782ddf87d81eabc0913dab94f2bcc246395645d8c85d5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bin_upload-0.1.2-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.2-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2be2a998d65b3d16fdc4204ec0be2e048a7c2c82f8a8078137cbffb11652ad1b
MD5 9bd4907894858b270cc8f5d9b805ad81
BLAKE2b-256 2b0ab4e01513e60cec32e64371acede776ba199895d38ba0327e84795d563f6d

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