name: farmfe-guide description: > Comprehensive Farm build-tool reference for AI agents. Use when writing or reviewing farm.config.ts, adding/configuring plugins, troubleshooting builds, implementing SSR or library mode, using the JavaScript API, writing Farm JS/Rust plugins, or authoring custom plugins from scratch. Covers all config options, official plugins, CLI commands, key features, and plugin authoring sourced from website/docs. license: MIT compatibility: Farm ≥ 1.x. Node 16.18.0+. Uses pnpm as package manager. metadata: author: farm version: "1.2" references: - skills/farmfe-guide/references/config.md - skills/farmfe-guide/references/cli.md - skills/farmfe-guide/references/plugins.md - skills/farmfe-guide/references/features.md - skills/farmfe-guide/references/javascript-api.md - skills/farmfe-guide/references/js-plugin-api.md - skills/farmfe-guide/references/writing-plugins.md - skills/farmfe-guide/references/recipes.md
Farm Build Tool — Agent Guide
Farm is an extremely fast Vite-compatible web build tool written in Rust.
Official site: https://farmfe.org | Package: @farmfe/core | Repo: farm-fe/farm
Reference Index
Detailed documentation is split into focused reference files under references/:
| File | Contents |
|---|---|
references/config.md |
Config file setup, shared options, all compilation.* options, all server.* options |
references/cli.md |
CLI commands (start, build, watch, preview, clean) and all flags |
references/plugins.md |
Using plugins (Rust, JS, Vite/Rollup, SWC, Runtime) + official plugins table |
references/features.md |
Quick start, CSS, TypeScript/JSX, env vars, assets, library mode, SSR, HMR, lazy compilation, persistent cache |
references/javascript-api.md |
@farmfe/core JS API — start/build/watch/preview/clean, Compiler, Server, loadEnv |
references/js-plugin-api.md |
Writing JS plugins — all hooks, filters structure, code examples |
references/writing-plugins.md |
Authoring custom plugins — scaffolding, JS plugin structure, Rust plugin structure, hooks, publishing |
references/recipes.md |
Common patterns, framework quick-configs (React/Vue/Svelte/Electron), troubleshooting |
Quick Orientation
Create a Project
pnpm create farm@latest
# or with a template:
pnpm create farm my-app --template react
Templates: vanilla, react, vue3, vue2, svelte, solid, preact, lit, nestjs, tauri, electron.
Minimal Config
import { defineConfig } from '@farmfe/core';
export default defineConfig({
plugins: ['@farmfe/plugin-react'], // Rust plugin by package name
compilation: {
input: { index: './index.html' },
output: { targetEnv: 'browser-es2017' },
},
server: { port: 9000 },
});
Key Rules
- Config file:
farm.config.ts|js|mjs— do not use__dirname/__filename; useimport.meta.url. - Rust plugins →
plugins: ['package-name']or['package-name', optionsObject]. - Vite/Rollup plugins →
vitePlugins: [plugin()], notplugins. - JS plugin hooks must declare
filters(regex arrays) for performance. resolve.symlinks: trueis required when using pnpm.targetEnv: 'library'enables library mode withformat: ['esm', 'cjs']array support.
Dev/Prod Defaults
| Option | Development | Production |
|---|---|---|
lazyCompilation |
✅ enabled | ❌ disabled |
persistentCache |
✅ enabled | ✅ enabled |
minify |
❌ disabled | ✅ enabled |
treeShaking |
❌ disabled | ✅ enabled |
presetEnv |
❌ disabled | ✅ enabled |
css.transformToScript |
✅ enabled | ❌ disabled |