38 lines
2.1 KiB
Markdown
38 lines
2.1 KiB
Markdown
---
|
|
title: "mise"
|
|
category: "Languages and runtimes"
|
|
tagline: "Installs the languages CoreDesktop doesn't, and the version each project needs."
|
|
source: "pacman"
|
|
package: "mise"
|
|
command: "mise"
|
|
website: "https://mise.jdx.dev/"
|
|
code: "https://github.com/jdx/mise"
|
|
---
|
|
|
|
## What it is
|
|
|
|
mise is a version manager for programming languages and developer tools. It installs as many versions of Ruby, Java, Deno, Node.js, Python and hundreds of other tools as you need, and switches between them automatically as you move between projects, based on a `mise.toml` (or an asdf `.tool-versions` file) in each project. It can also set environment variables and run tasks for a project.
|
|
|
|
## Why it's here
|
|
|
|
- **The languages you choose.** Go, Rust, Node.js, Python, Bun and Zig come from pacman; mise installs anything else.
|
|
- **The right version per project.** Change directory and the versions change with you.
|
|
- **One tool for every language.** No separate rbenv, nvm and pyenv.
|
|
|
|
## On CoreDesktop
|
|
|
|
mise is installed from pacman, and CoreDesktop's shell setup turns it on. To add languages, run `configure languages`: it asks whether you want [Ruby on Rails](/software/ruby-on-rails/), then lets you name anything else mise can install, with a version, such as `java@21 deno@latest`. `mise registry` lists what it can install.
|
|
|
|
`update` keeps what you install up to date within the version you chose: `latest` moves to each new release, and `21` stays on version 21. To remove a language, run `mise unuse -g <tool>`, for example `mise unuse -g java`.
|
|
|
|
If a project needs a version other than the one installed, tell mise in the project's folder:
|
|
|
|
```
|
|
cd ~/Projects/my-app
|
|
mise use node@20
|
|
```
|
|
|
|
This writes a `mise.toml` in the project. Inside that folder `node` is version 20, and everywhere else it's the version from pacman. Commit `mise.toml` with your project, and anyone else using mise gets the same version.
|
|
|
|
Commands run over SSH can find tools installed with mise, and the `ga` function, which creates a Git worktree, trusts the new worktree's mise config. Machines that had mise from its own installer switch to the pacman package on their next `update`.
|