name: building-farm-from-source description: Use when building Farm locally from source, native bindings or Rust plugin artifacts are missing, or an example/E2E needs local core and plugin artifacts. license: MIT compatibility: Requires Node, pnpm, cargo, npm scripts, and optional Playwright browsers for E2E. metadata: author: farm version: "1.0"
Building Farm From Source
Overview
Farm examples depend on generated JS packages and native .node / .farm
artifacts. Build missing prerequisites from the bottom up before running example
builds or E2E.
When to Use
napi: not found, missingbinding.cjs, or missingfarm.*.node.Cannot find module '@farmfe/plugin-*-linux-x64-gnu'.packages/cli/dist/index.jsor packagedist/files are missing.- Running
examples/<name>orpnpm run test-e2e -- --example <name>locally.
Command Order
Run from /home/runner/work/farm/farm unless noted:
- Install dependencies if CLIs are missing:
ELECTRON_SKIP_BINARY_DOWNLOAD=1 PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 corepack pnpm install - Build core native binding first:
cd /home/runner/work/farm/farm/packages/core && npm run build:rs - Build JS package prerequisites:
cd /home/runner/work/farm/farm/packages/utils && npx tsc -p tsconfig.json --outDir dist cd /home/runner/work/farm/farm corepack pnpm --filter @farmfe/runtime run build corepack pnpm --filter @farmfe/runtime-plugin-hmr run build corepack pnpm --filter @farmfe/runtime-plugin-import-meta run build corepack pnpm --filter @farmfe/plugin-tools run build - Build Rust plugin artifacts required by core/examples:
cd /home/runner/work/farm/farm/rust-plugins/replace-dirname && npm run build cd /home/runner/work/farm/farm/rust-plugins/react && npm run build cd /home/runner/work/farm/farm/rust-plugins/tailwindcss && npm run build - Build core JS and CLI:
cd /home/runner/work/farm/farm corepack pnpm --filter @farmfe/core run build corepack pnpm --filter @farmfe/cli run build - Build and test the affected example:
cd /home/runner/work/farm/farm/examples/tailwindcss-rust-plugin && npm run build cd /home/runner/work/farm/farm corepack pnpm exec playwright install chromium corepack pnpm run test-e2e -- --example tailwindcss-rust-plugin
Debugging Missing Prerequisites
| Symptom | Build first |
|---|---|
napi: not found |
corepack pnpm install |
Missing @farmfe/utils/colors |
cd packages/utils && npx tsc -p tsconfig.json --outDir dist |
Missing @farmfe/plugin-replace-dirname-* |
cd rust-plugins/replace-dirname && npm run build |
Missing @farmfe/plugin-react-* |
cd rust-plugins/react && npm run build |
Missing @farmfe/plugin-tailwindcss-* |
cd rust-plugins/tailwindcss && npm run build |
Missing packages/cli/dist/index.js |
corepack pnpm --filter @farmfe/cli run build |
| Playwright executable missing | corepack pnpm exec playwright install chromium |
Notes
- For build verification, prefer package
npm run buildscripts over direct Cargo commands. - Rust plugin builds copy local artifacts into
rust-plugins/*/npm/<abi>/. - If
pnpm installcannot download Electron or Playwright binaries, skip them during install and install Playwright Chromium only when E2E is needed.