-
-
Notifications
You must be signed in to change notification settings - Fork 207
manual installation guide for Biome: Added winget install option. F…
#3494
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -7,35 +7,149 @@ import { Code } from '@astrojs/starlight/components'; | |||||||||||||||
| import { getLatestVersion } from "@biomejs/version-utils"; | ||||||||||||||||
| export const version = await getLatestVersion("stable"); | ||||||||||||||||
|
|
||||||||||||||||
| Using Biome's standalone CLI binary can be a great choice if you aren't already using Node.js or `npm` (or any other package manager). | ||||||||||||||||
| Or in other words, Biome shouldn't be the only reason for you to have a `package.json`. | ||||||||||||||||
| You can install Biome to your machine to use like any other command line tool. This can be a great choice | ||||||||||||||||
| if you need to run this manually: for instance, if you use a code editor that does not have a Biome plugin, | ||||||||||||||||
| or if you intend to use this in shell scripts or another local tool to automate processing of source code | ||||||||||||||||
| files, or if you intend to have an AI coding tool execute this tool. | ||||||||||||||||
|
Comment on lines
+11
to
+13
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I like the proposed use cases, maybe we can make a list out of them
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. neat. glad the suggestion landed. I did notice the readme changed a bit since I last was here. Good job. |
||||||||||||||||
|
|
||||||||||||||||
| If you are using Biome in a CI/CD pipeline, you should install it directly into the project using a Node.js | ||||||||||||||||
| package manager (`npm`, `pnpm`, etc) and abandon this manual option. | ||||||||||||||||
|
Comment on lines
+15
to
+16
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Since this is the page of manual installation, we shouldn't overstep into CI/CD suggestions. Plus, we already own our own GitHub action and recipes, which doesn't use npm. To sum up, this suggestion shouldn't be here.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. People will tend to follow instructions in whichever section they found without trying to find the other section. Unfortunately, redundant explanation is necessary to avoid frustrating someone learning from the docs. |
||||||||||||||||
|
|
||||||||||||||||
| :::note | ||||||||||||||||
| If you're already using `npm` or another package manager, then using the package manager is the [preferred way to install](/guides/getting-started#installation) Biome. | ||||||||||||||||
| You're already familiar with the tooling, and installing and updating are simpler. | ||||||||||||||||
| If you are unsure which one to choose, see the [getting started guide](/guides/getting-started#installation). | ||||||||||||||||
| You're already familiar with package management in Node.js projects, using those tools makes installing, | ||||||||||||||||
| updating, and freezing the version simpler for collaboration scenarios. | ||||||||||||||||
| ::: | ||||||||||||||||
|
|
||||||||||||||||
| ## Supported platforms | ||||||||||||||||
| ## Supported Architectures | ||||||||||||||||
|
|
||||||||||||||||
| You have to pick the correct binary for your platform for Biome work. The following table should help you do so. | ||||||||||||||||
| You have to pick the correct binary for your CPU architecture for Biome work. The following table should help you do so. | ||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why the change? FYI we chose the word platform because there are two variables: CPU and OS
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The reader already knows that they need to look for their operating system. 'Platform' only implies the OS. The original basic definition of "platform" was synonymous with "Operating System" excluding the CPU architecture but has been extended illegitimately to include CPU architecture. Platform is a release specification, like "Windows 11", or "Nintendo 64". What is important and not obvious to the user is that they must choose their CPU architecture as well. |
||||||||||||||||
|
|
||||||||||||||||
| | CPU Architecture | Windows | macOS | Linux | Linux (musl) | | ||||||||||||||||
| | ---------------- | ------------- | ---------------------------- | ------------- | ------------------ | | ||||||||||||||||
| | `arm64` | `win32-arm64` | `darwin-arm64` (M1 or newer) | `linux-arm64` | `linux-arm64-musl` | | ||||||||||||||||
| | `x64` | `win32-x64` | `darwin-x64` | `linux-x64` | `linux-x64-musl` | | ||||||||||||||||
|
|
||||||||||||||||
| ## Windows | ||||||||||||||||
|
|
||||||||||||||||
| Install Biome either using the `winget` native package manager for Windows, or a download: | ||||||||||||||||
|
|
||||||||||||||||
| :::note | ||||||||||||||||
| Use the Linux variant for Windows Subsystem for Linux (WSL). | ||||||||||||||||
| ::: | ||||||||||||||||
|
|
||||||||||||||||
| ## Homebrew | ||||||||||||||||
| ### Winget | ||||||||||||||||
|
|
||||||||||||||||
| Native package manager for Windows: | ||||||||||||||||
|
|
||||||||||||||||
| <Code lang="shell" code={` | ||||||||||||||||
| # Windows (x86_64, Powershell) | ||||||||||||||||
| winget install BiomeJS.Biome | ||||||||||||||||
| `} /> | ||||||||||||||||
|
|
||||||||||||||||
| ### Download | ||||||||||||||||
|
|
||||||||||||||||
| Download via [Latest CLI release](https://github.com/biomejs/biome/releases) on GitHub or the following shell command: | ||||||||||||||||
|
|
||||||||||||||||
| <Code lang="shell" code={` | ||||||||||||||||
| # Windows (x86_64, Powershell) | ||||||||||||||||
| Invoke-WebRequest -Uri "https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-win32-x64.exe" -OutFile "%USERPROFILE%\Downloads\binaries\biome.exe" | ||||||||||||||||
| `} /> | ||||||||||||||||
|
|
||||||||||||||||
| Now you can use Biome by running `C:\users\<your_username>\Downloads\binaries\biome.exe`. Note that this does | ||||||||||||||||
| not register Biome on the PATH var (system or user var), so you cannot call it from within any folder by | ||||||||||||||||
| simply using `biome`. In order to register it to the PATH, edit the PATH variable using your operating | ||||||||||||||||
| system's GUI or command line: | ||||||||||||||||
|
|
||||||||||||||||
| Either | ||||||||||||||||
|
|
||||||||||||||||
| - Press Windows key + R to open the Run dialog, type **sysdm.cpl**, and press Enter. | ||||||||||||||||
| - Add the folder in a new line to the User PATH variable (not system PATH). | ||||||||||||||||
|
|
||||||||||||||||
| or | ||||||||||||||||
|
|
||||||||||||||||
| - Open Terminal and run: | ||||||||||||||||
|
|
||||||||||||||||
| <Code lang="shell" code={` | ||||||||||||||||
| # Windows (x86_64, Powershell) | ||||||||||||||||
| setx PATH "%PATH%;%USERPROFILE%\Downloads\binaries" | ||||||||||||||||
| `} /> | ||||||||||||||||
|
|
||||||||||||||||
| This updates the PATH permanently and applies to future terminal sessions. To update the current terminal, run | ||||||||||||||||
|
|
||||||||||||||||
| <Code lang="shell" code={` | ||||||||||||||||
| # Windows (x86_64, Powershell) | ||||||||||||||||
| set PATH="%PATH%;%USERPROFILE%\Downloads\binaries\" | ||||||||||||||||
| `} /> | ||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we add a note that says that those tags/binaries published on wget aren't managed by the team?
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah I'm starting to realize a lot of them aren't managed by the original teams. Something needs to be done about that at the cultural level. There needs to be a clearer and easier way to onboard existing devs into the winget workflow. I found and still find it very confusing. |
||||||||||||||||
|
|
||||||||||||||||
| ## macOS and Linux | ||||||||||||||||
|
|
||||||||||||||||
| Biome is available as a [Homebrew formula](https://formulae.brew.sh/formula/biome) for macOS and Linux users. | ||||||||||||||||
|
|
||||||||||||||||
| ```shell | ||||||||||||||||
| brew install biome | ||||||||||||||||
| ``` | ||||||||||||||||
|
|
||||||||||||||||
| ### Using a published binary | ||||||||||||||||
|
|
||||||||||||||||
| To install Biome, grab the executable for your platform from the [latest CLI release](https://github.com/biomejs/biome/releases) on GitHub and give it execution permission. | ||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yeah sounds fine. I'm late to the party. all good |
||||||||||||||||
|
|
||||||||||||||||
| <Code lang="shell" code={` | ||||||||||||||||
| # macOS arm64 (Apple Silicon – M1/M2/M3/M4) | ||||||||||||||||
| curl -L https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-darwin-arm64 -o biome | ||||||||||||||||
| chmod +x biome | ||||||||||||||||
|
|
||||||||||||||||
| # macOS x86_64 (Intel Macs) | ||||||||||||||||
| curl -L https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-darwin-x64 -o biome | ||||||||||||||||
| chmod +x biome | ||||||||||||||||
|
|
||||||||||||||||
| # Linux x86_64 | ||||||||||||||||
| curl -L https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-linux-x64 -o biome | ||||||||||||||||
| chmod +x biome | ||||||||||||||||
|
|
||||||||||||||||
| # Linux arm64/aarch64 (Raspberry Pi 64-bit, AWS Graviton, etc.) | ||||||||||||||||
| curl -L https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-linux-arm64 -o biome | ||||||||||||||||
| chmod +x biome | ||||||||||||||||
| `} /> | ||||||||||||||||
|
|
||||||||||||||||
| You can now run Biome with `./biome`. | ||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. One of these days, I hope someone builds a proper instruction documentation system that models the tangents and decision paths (windows, linux, this, that, the other) the user is taking during the instructions. GitHub is not innovative enough in this area. |
||||||||||||||||
|
|
||||||||||||||||
| To run it globally from any directory just by typing `biome`, add it to your `PATH`. | ||||||||||||||||
| Here are the recommended ways: | ||||||||||||||||
|
|
||||||||||||||||
| **Recommended: Move the binary to a directory already in `$PATH`** | ||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should we suggest a way to know which folders are available in
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. that's a good idea. again, another tangent that really sucks to include by default but is highly useful to the beginner. Include it or risk being yelled at by another beginner. Hate to say it, but it needs it. Also I just found out Windows has a major flaw in their PATH editor GUI where it won't let you add more paths to the PATH variable after a certain length of the variable. Windows is soooo dumb. The PowerToys app can circumvent the limitation. Or users can use the command line, which is a pain. |
||||||||||||||||
|
|
||||||||||||||||
| <Code lang="shell" code={` | ||||||||||||||||
| # Most common choice on both macOS and Linux | ||||||||||||||||
| sudo mv biome /usr/local/bin/biome | ||||||||||||||||
|
|
||||||||||||||||
| # Alternative (user-local, no sudo needed – preferred on many modern Linux distros) | ||||||||||||||||
| mkdir -p ~/.local/bin | ||||||||||||||||
| mv biome ~/.local/bin/biome | ||||||||||||||||
| `} /> | ||||||||||||||||
|
|
||||||||||||||||
| **Alternative: Add the current folder to your `PATH`** | ||||||||||||||||
| If you prefer not to move the binary, append the current directory to `PATH` in your shell configuration file. | ||||||||||||||||
|
Comment on lines
+131
to
+132
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's not very clear what "current folder" actually means, because it could mean anything, even a temporary folder where users download their stuff. I suggest rewording the suggestion in another way by suggesting to add a new folder to
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If I recall correctly, I wrote this in the context of a procedure, so the user would have to infer what their current folder is from the state of the install procedure. Another potential liability in the instructions. You're right, but I don't have a solution for you. In my experience, I usually just let the user fail on that one, if they forget their context or skip through the document, it's on them to correctly re-read and model it in their head before following the instruction here. |
||||||||||||||||
|
|
||||||||||||||||
| - macOS (zsh – default since Catalina) – add to `~/.zshrc` | ||||||||||||||||
| <Code lang="shell" code={`export PATH="$PATH:$(pwd)"`} /> | ||||||||||||||||
| - macOS (bash) or Linux – add to `~/.bashrc`, `~/.zshrc`, or equivalent | ||||||||||||||||
| <Code lang="shell" code={`export PATH="$PATH:$(pwd)"`} /> | ||||||||||||||||
|
|
||||||||||||||||
| Then reload your shell: | ||||||||||||||||
|
|
||||||||||||||||
| <Code lang="shell" code={`source ~/.zshrc # or source ~/.bashrc`} /> | ||||||||||||||||
|
|
||||||||||||||||
| :::note | ||||||||||||||||
| **Tip**: Moving the binary to `/usr/local/bin` or `~/.local/bin` (as shown in the | ||||||||||||||||
| recommended method) is cleaner, more reliable, and works across all terminal | ||||||||||||||||
| sessions without relying on `$(pwd)`. | ||||||||||||||||
| ::: | ||||||||||||||||
|
Comment on lines
+143
to
+147
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Starlight already has the
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ohh nice! I didn't know. I am the ignorant. |
||||||||||||||||
|
|
||||||||||||||||
| Now `biome` works everywhere: | ||||||||||||||||
|
|
||||||||||||||||
| <Code lang="shell" code={`biome --version biome format . biome lint .`} /> | ||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
We don't recommend using the
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't even remember why I wrote this (or if I copied it from somewhere) |
||||||||||||||||
|
|
||||||||||||||||
| ## Docker | ||||||||||||||||
|
|
||||||||||||||||
| Biome publishes [official Docker images](https://github.com/biomejs/docker/pkgs/container/biome) that support | ||||||||||||||||
|
|
@@ -63,27 +177,6 @@ docker run -v $(pwd):/code ghcr.io/biomejs/biome format | |||||||||||||||
| docker run -v $(pwd):/code ghcr.io/biomejs/biome format --write | ||||||||||||||||
| ``` | ||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
| ## Using a published binary | ||||||||||||||||
|
|
||||||||||||||||
| To install Biome, grab the executable for your platform from the [latest CLI release](https://github.com/biomejs/biome/releases) on GitHub and give it execution permission. | ||||||||||||||||
|
|
||||||||||||||||
| <Code lang="shell" code={` | ||||||||||||||||
| # macOS arm (M1 or newer) | ||||||||||||||||
| curl -L https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-darwin-arm64 -o biome | ||||||||||||||||
| chmod +x biome | ||||||||||||||||
|
|
||||||||||||||||
| # Linux (x86_64) | ||||||||||||||||
| curl -L https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-linux-x64 -o biome | ||||||||||||||||
| chmod +x biome | ||||||||||||||||
|
|
||||||||||||||||
| # Windows (x86_64, Powershell) | ||||||||||||||||
| Invoke-WebRequest -Uri "https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-win32-x64.exe" -OutFile "biome.exe" | ||||||||||||||||
| `} /> | ||||||||||||||||
|
|
||||||||||||||||
| Now you can use Biome by simply running `./biome`. | ||||||||||||||||
|
|
||||||||||||||||
| ## Next Steps | ||||||||||||||||
|
|
||||||||||||||||
| Follow our [Getting Started guide](/guides/getting-started/). | ||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I liked the previous wording because it highlighted the fact that you don't need Node.js to use Biome, that was the major selling point.
The proposed wording doesn't do that. Plus, you can install CLI tools globally even with npm, so we lost the fact that Biome is a standalone binary
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
True. I was reflowing the wording to pick up where the previous thoughts left off. The former wording was kind of a sudden break in style if I recall correctly. Maybe not the biggest problem.