chore: add pixi env for local dev (Node 22 from conda-forge)#43
Merged
Conversation
System Node doesn't matter anymore — pixi solves a Node 22.12+ env from conda-forge on first `make <target>` and routes all npm work through it. Fixes "Node.js v20 is not supported by Astro" when the system has an older Node. - pixi.toml: workspace + tasks (install, dev, build, preview, check, banner) with depends-on so `pixi run dev` implies install. - Makefile: every target shells to `pixi run <task>`. - .gitignore: add .pixi/. - README: short pixi setup note + install link. CI is unchanged — it still uses actions/setup-node directly. This only affects local development.
This was referenced May 15, 2026
…#45) Closes #44. - `make` with no args now defaults to `help`, which is auto-generated from `## description` comments next to each target. - `_check_pixi` phony prereq fails fast with an install pointer when pixi isn't on PATH, instead of letting every target die with "pixi: command not found". - New `clean` target: removes dist/, .astro/, .pixi/, node_modules/. - New `doctor` target: prints resolved pixi/node/npm versions. - Every target now echoes a short `==>` banner so the output isn't a wall of npm log. - `make post` error message now shows the accepted TYPE values (`note|arch`) instead of only naming the flag.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
System Node version no longer matters for local dev. Pixi solves a Node 22.12+ env from conda-forge on first
make <target>and routes every npm-flavored command through it.Fixes the
Node.js v20.11.0 is not supported by Astroerror when the system has an older Node, without forcing a global Node upgrade or fighting nvm.pixi.toml— workspace + tasks (install,dev,build,preview,check,banner) withdepends-onsopixi run devimpliesinstall.Makefile— every target now shells topixi run <task>instead of callingnpmdirectly.pixi.lock— committed (reproducibility, same aspackage-lock.json)..gitignore— adds.pixi/.README.md— short pixi setup note pointing at the pixi install docs.Why pixi and not uv
uvis Python-only and can't manage Node.pixiuses conda-forge under the hood, which has a realnodejspackage, so this is the right tool for the job.nvm/fnmwould also work but require shell integration and aren't reproducible from a lockfile.What's unchanged
actions/setup-node@v6directly. This change only affects local development.package.jsonscripts andnpmcommands work exactly the same — pixi just provides the Node binary they run under.Test plan
pixi run checkworks on a clean checkout (verified locally — env solves, Node 22 installs, spell-check passes).pixi run buildproducesdist/(covered by the install→build dependency chain).make devworks on their machine after installing pixi.Note for #22
PR #22 had its own pixi setup commits that did essentially the same thing. After this lands, those commits in #22 become redundant and will fall out cleanly on the next rebase.