Development Setup
This page is for contributors working on the GJSify monorepo itself. If you just want to use GJSify in your own project, head to Getting Started instead.
Prerequisites
Section titled “Prerequisites”- GJS 1.86+ (GNOME 49+)
- Node.js 24+ (only for
node:runtime parity testing; not required for install/build/publish) - GNOME development libraries:
glib2-devel,gobject-introspection-devel,gtk4-devel,libsoup3-devel,vala,blueprint-compiler
On Fedora:
sudo dnf install gjs gtk4-devel glib2-devel gobject-introspection-devel libsoup3-devel vala blueprint-compilerThe monorepo bootstraps from the published
gjsify(ADR 0002) — no yarn, no Corepack, no Node-only npm CLI, and no committed bundle in the checkout.install.mjsdownloads the release asset, verifies its SHA-256 and caches it by digest.Use the FULL
install.mjs, not--fetch-only: only the full mode runsgjsify install -g @gjsify/cli, which puts@gjsify/tscbeside the CLI. On a host with no Node that global copy is the only thinggjsify tsccan resolve, andbuild:infrastarts with agjsify tsc.
Clone and build
Section titled “Clone and build”git clone https://github.com/gjsify/gjsify.gitcd gjsify
# Fetch + install the published gjsify (no yarn / Node required)gjs -m install.mjs
# Install this checkout's dependencies with itgjsify install --immutable
# Build the toolchain the rest of the repo is built withgjsify run build:infra
# From here on, `gjsify` is on $PATH via node_modules/.binPATH="$PWD/node_modules/.bin:$PATH"
# Build all packagesgjsify run build
# Run the full test suite on Node.js and GJSgjsify run testCommon commands
Section titled “Common commands”gjsify run build # Build every workspace packagegjsify run build:node # Only the Node.js targetsgjsify run build:web # Only the Web API targetsgjsify run check # Type-check all packagesgjsify run test # Run tests on Node.js and GJSgjsify run clear # Remove all build outputsPer-package workflows follow the same pattern:
cd packages/node/fsgjsify run build:gjsify # Build the packagegjsify run build:test:gjs # Build the GJS test bundlegjsify run test:gjs # Run tests under GJSgjsify run test:node # Run the same tests under Node.jsNext steps
Section titled “Next steps”- Architecture — monorepo structure, build system and GNOME library mappings
- TDD Workflow — how to port a new Node.js or Web API to GJS test-first