Installation
Rune installs as a development dependency at the root of the repository. The package resolves one native binary for the current platform through optional dependencies, so nothing is compiled and no postinstall script runs.
Install it once, at the workspace root. Packages call the binary through node_modules/.bin,
which every package manager links for the whole workspace.
Verifying the install
The version printed here is the version of the native binary, not the wrapper package. They are released together and always match.
The first config
rune init writes rune.config.ts into the directory it is run from, with a comment header naming
every field the version that wrote it accepts. It refuses to overwrite an existing file. Run it at
the repository root.
The result, under the comment header:
rune list and rune run hello both work immediately. rune init shows the full file.
Rune finds the config by walking up from wherever it is invoked, so a run from packages/api/src
uses the same config as a run from the root.
Adding import { defineConfig } from '@gio-labs/rune' and wrapping the object gives you editor
autocomplete. Rune supplies that module itself, so it works with nothing installed.
Node version
The wrapper is written in conservative JavaScript and declares no engines field, so it installs
on any Node version. Node 20.19 and later is the tested floor.
Platforms
One static Linux binary per architecture runs on every distribution, glibc and musl alike. The full table is on Platforms.
Next
Your first script runs a command from a nested package and shows what Rune does to the environment before spawning it.