Windows 11: Fresh clone of main fails to build (@tryghost/shade / @tryghost/koenig-lexical)

Hi everyone,

I’m trying to set up the Ghost development environment to start contributing, but I’m unable to build the project on a completely fresh checkout.

Environment

  • OS: Windows 11 Home Single Language (23H2, Build 22631)

  • Repository: Fresh clone of TryGhost/Ghost

  • Branch: main

  • Commit: e9ef52762c

  • Node.js: v22.x (also reproduced on v24.16.0)

  • pnpm: 11.9.0

  • Docker Desktop: Installed

  • Docker Compose: v5.0.0-desktop.1

Setup Steps

git clone --recurse-submodules https://github.com/TryGhost/Ghost.git
cd Ghost
pnpm install

Installation completes successfully:

Scope: all 31 workspace projects
Already up to date

Submodules are initialized correctly:

git submodule status

Output:

bb3d0de3c7065677bb18b38d8185a8a980b163bd ghost/core/content/themes/casper
3a5643b42a4700e961e65ebda92f6a6c56bf8c86 ghost/core/content/themes/source

Verification

The dependencies that initially appeared missing are actually installed:

pnpm why @vitejs/plugin-react
pnpm why vite-plugin-svgr

Both commands resolve successfully.


Build Failure

Running:

pnpm build

fails with two projects:

  • @tryghost/shade

  • @tryghost/koenig-lexical

First failure (@tryghost/shade)

nx run @tryghost/shade:build

tsc -p tsconfig.declaration.json &&
tsc-alias -p tsconfig.declaration.json &&
vite build

Build failed with 1 error:

[INVALID_OPTION]
You must supply `options.input` to rolldown

This appears to originate from Rolldown/Vite during the production build.


Second failure (@tryghost/koenig-lexical)

JSONError

path:
.../kg-default-nodes/build/esm/package.json

expected value at line 1 column 1

This appears multiple times during the build and may simply be a consequence of the shade build failing first.


pnpm dev

Running:

pnpm dev

also fails.

Additionally, Docker receives the following command:

docker compose -f compose.dev.yaml ${DEV_COMPOSE_FILES} build

where ${DEV_COMPOSE_FILES} is passed literally instead of expanding.

Docker reports:

unknown docker command:
"compose ${DEV_COMPOSE_FILES}"

I’m not sure whether this is related to the main build failure or a separate Windows-specific issue.


Things I’ve Already Tried

  • Fresh clone of the repository

  • Cloned with --recurse-submodules

  • pnpm install

  • Node 24

  • Node 22

  • PowerShell

  • Git Bash

  • Verified dependencies using pnpm why

  • Verified submodules

  • Verified Docker installation

The build failure remains identical.


Expected Result

pnpm build completes successfully.


Actual Result

Build consistently fails in:

  • @tryghost/shade

  • @tryghost/koenig-lexical

preventing the development environment from starting.


Question

Is this a known issue on Windows (possibly related to the recent Vite/Rolldown migration), or is there an additional setup step required that isn’t documented in the contributor guide?

Any guidance would be appreciated. I’m trying to get my local environment working so I can start contributing. Thank You.