This is a reimplementation of a desktop game Baba Is You which is only used for educational purposes.
If you want the play the origin version of Baba Is You, please purchase it here.
Baba Is You is a puzzle game where the rules you have to follow are present as physical objects in the game world.
By manipulating the rules, you can change how the game works, repurpose things you find in the levels and cause surprising interactions!
In each level, you can see several objects and words on the game map.
You can use the arrow keys to control the movement of certain objects, find the associated word to the object that you can control, and you will see it makes a BABA IS YOU pattern.
Next, find the object that is connected with the words IS WIN to end the game.
Try to move blocks to use various patterns to solve every level!
To know more about the rules, check out Baba Is You Wiki.
(This project is just a clone version of Baba Is You, there might be some effects that are not equivalent to the original game.)
ESC: MenuR: Restart level- Arrow keys: Move up/down/left/right, you can also use W/A/S/D.
Use Node.js 24.22.1 (.node-version) and Bun 1.4.4 (package.json). Bun is the package manager; commit bun.lock when dependencies change.
bun install --frozen-lockfile --ignore-scripts
bun run devOpen the URL printed by Vite. Level data, sprites, and music are served from public/; no environment variables are required for local development.
Install Chromium once, then run the same checks as CI:
bun run playwright install chromium
bun run checkOn Linux, use bun run test:install to install browser system dependencies too.
bun run lint: check all source/config files without modifying them (bun run lint:fixapplies fixes).bun run typecheck: check TypeScript with the native TypeScript 7 compiler and Vue components withvue-tsc.bun run build: create the production site indist/.bun run deploy:check: validate the Cloudflare deployment without uploading (runbun run buildfirst).bun run test: run Chromium regression tests against the production build (runbun run buildfirst).bun run serve: preview the production build locally.
TypeScript 7 currently has no compiler API for typescript-eslint or Vue tooling. The typescript dependency therefore aliases Microsoft's @typescript/typescript6 compatibility package; @typescript/native retains TypeScript 7 and its tsc command. See Microsoft's side-by-side setup. Keep both aliases until the tooling supports the native API.
CI uses the versions above, frozen installs, lint, both type checks, a production build, a Cloudflare deployment dry-run, and browser tests covering level loading, keyboard controls, restart, and switching levels. GitHub Actions are pinned to the latest verified release commits; Renovate tracks their updates.
The checked-in wrangler.jsonc deploys dist/ as static assets for the baba-is-you Worker, with single-page application fallback. No Cloudflare Vite plugin is needed; keep the existing Vue Vite configuration.
Set these commands in Cloudflare Workers Builds:
- Build command:
bun run build - Deploy command:
bun x wrangler deploy(the existingnpx wrangler deployalso uses the pinned local Wrangler).
Do not use pnpm run build. Node.js is selected from .node-version; remove or align any dashboard NODE_VERSION override. For a local deployment with Cloudflare credentials configured, run bun run deploy.
There are actually many bugs to be fixed in this project. If you find them while playing, please let us know as much as possible.
Hi! We are students from National Taipei University of Technology with a strong passion in programming. Check out our profiles if you like our projects!
