Yet another
node_modules/
package manager, I guess.
Orogene is a next-generation package manager for tools that use
node_modules/
, such as bundlers, CLI tools, and Node.js-based
applications. It's fast, robust, and meant to be easily integrated into
your workflows such that you never have to worry about whether your
node_modules/
is up to date.
Note: Orogene is still under heavy development and shouldn't be considered much more than a tech demo or proof of concept. Do not use in production yet.
You will need a Rust toolchain installed. See the official Rust docs for instructions. And git. Next, get a checkout of the source:
git clone https://github.com/orogene/orogene.git
cd orogene
Your first build:
cargo build
The first time you run this, this downloads all the dependencies you will need to build orogene automatically. This step might take a minute or two, but it will only be run once.
Then it compiles all the dependencies as well as the orogene source files.
It should end with something like:
…
Finished dev [unoptimized + debuginfo] target(s) in 1m 22s
When you’ve made changes to the orogene source code, run cargo build
again, and it will only compile the changed files quickly:
cargo build
Compiling orogene v0.1.0 (/Users/jan/Work/rust/orogene)
Finished dev [unoptimized + debuginfo] target(s) in 2.41s
After building successfully, you can run your build with cargo run
. In
the default configuration, this will run an oro
executable built for
your local system in ./target/debug
. When you run it, it shows you a
helpful page of instructions of what you can do with it. Give it a try:
Finished dev [unoptimized + debuginfo] target(s) in 0.14s
Running `target/debug/oro`
`node_modules/` package manager and utility toolkit.
Usage: oro [OPTIONS] <COMMAND>
Commands:
ping Ping the registry
resolve Resolve a package tree and save the lockfile to the project directory
restore Resolves and extracts a node_modules/ tree
view Get information about a package
help Print this message or the help of the given subcommand(s)
Options:
--root <ROOT> Package path to operate on
--registry <REGISTRY> Registry used for unscoped packages
--cache <CACHE> Location of disk cache
--config <CONFIG> File to read configuration values from
--loglevel <LOGLEVEL> Log output level/directive
-q, --quiet Disable all output
--json Format output as JSON
-h, --help Print help (see more with '--help')
-V, --version Print version
That’s it for now, happy hacking!