pkgx
is a single, standalone binary that can run anything.
Quickstart
brew install pkgxdev/made/pkgx
Run Anything
$ deno
command not found: deno
$ pkgx deno
Deno 1.36.3
> ^D
$ deno
command not found: deno
# ^^ nothing was installed; your system remains untouched
Run Any Version of Anything
$ pkgx node@14 --version
Node.js v14.21.3
$ pkgx python@2 --version
Python 2.7.18
Run Anywhere
-
macOS
- macOS >= 11
- x86-64 & Apple Silicon
-
Windows
WSL2; x86-64. Native windows is planned.
-
Docker
$ pkgx docker run -it pkgxdev/pkgx (docker) $ pkgx node@16 Welcome to Node.js v16.20.1. Type ".help" for more information. >
Or in a
Dockerfile
:FROM pkgxdev/pkgx RUN pkgx deno@1.35 task start
Or in any image:
FROM ubuntu RUN curl https://pkgx.sh | sh RUN pkgx python@3.10 -m http.server 8000
-
CI/CD
- uses: pkgxdev/setup@v1 - run: pkgx shellcheck
Or in other CI/CD providers:
$ curl https://pkgx.sh | sh $ pkgx shellcheck
-
Scripts
#!/usr/bin/env -S pkgx +git python@3.12 # python 3.12 runs the script and `git` is available during its execution
-
Editors
$ cd myproj myproj $ env +cargo (+cargo) myproj $ code .
Or use
dev
; a separate tool that uses the pkgx primitives to automatically determine and utilize your dependencies based on your project’s keyfiles.$ cd myproj myproj $ dev env +cargo +rust (+cargo+rust) my-rust-project $ code .
Shell Integration
pkgx
puts the whole open source ecosystem at your fingertips and its
optional shell integration makes workflows with that open source
even more seamless.
$ env +go@1.16 # do `pkgx integrate --dry-run` first
added ~/.pkgx/go.dev/v1.16 to environment
(+go) $ go
Go is a tool for managing Go source code.
#…
(+go) $ env | grep go
PATH=~/.pkgx/go.dev/v1.16.15/bin:$PATH
LIBRARY_PATH=~/.pkgx/go.dev/v1.16.15/lib
(+go) $ env -go
removed ~/.pkgx/go.dev/v1.16 from environment
$ go
command not found: go
Tools are available for the duration of your terminal session.
If you need them for longer, eg. pkgx install go
.
dev
dev
is a separate tool that leverages pkgx's core
features to auto-detect and install project dependencies, seamlessly
integrating them into your shell and editor.
my-rust-proj $ dev # do `pkgx integrate --dry-run` first
dev: found Cargo.toml; env +cargo +rust
(+cargo+rust) my-rust-proj $ cargo build
Compiling my-rust-proj v0.1.0
#…
The dev
tool requires our shell integration to work.
Getting Started
brew install pkgxdev/made/pkgx
no
brew
? docs.pkgx.sh/installing-w/out-brew
Integrating with your Shell
pkgx integrate --dry-run # docs.pkgx.sh/shell-integration
Further Reading
docs.pkgx.sh is a comprehensive manual and user guide for pkgx
.
Contributing
- To add packages see the pantry README
- To hack on
pkgx
itself; clone it and thenpkgx deno task
to list entrypoints for hackers
If you have questions or feedback:
- github.com/orgs/pkgxdev/discussions
- x.com/pkgxdev (DMs are open)