sanity build command compiles your Sanity Studio into an optimized static bundle suitable for production deployment. It creates a dist/ directory containing HTML, JavaScript, CSS, and assets.
Basic Usage
dist/ directory with default production settings.
Syntax
OUTPUT_DIR- Optional output directory (default:./dist)
Options
--source-maps- Enable source maps for built bundles (increases size)--no-minify- Skip minifying built JavaScript (speeds up build, increases size)-y,--yes- Unattended mode, answers “yes” to all prompts--schema-path <path>- Specify custom path to schema files
Examples
Build Output
The build creates adist/ directory:
Build Process
The build process:- Cleans output folder - Removes existing
dist/directory - Bundles Studio - Compiles with Vite
- Minifies JavaScript - Reduces file size (unless
--no-minify) - Optimizes assets - Compresses images and other resources
- Generates import map - Creates auto-update configuration (if enabled)
- Extracts schema - Stores schema for runtime validation
Production Optimizations
The build includes several production optimizations:Code Splitting
Automatic code splitting reduces initial load time:- Vendor dependencies in separate chunks
- Route-based code splitting
- Dynamic imports for plugins
Minification
JavaScript is minified by default:- Removes whitespace and comments
- Shortens variable names
- Tree-shakes unused code
- Compresses with terser
Asset Optimization
- CSS is extracted and minified
- Images are optimized
- Fonts are subsetted
- SVGs are compressed
Source Maps
Enable source maps for production debugging:.map files alongside bundled JavaScript:
Auto-Updates
Sanity Studio supports auto-updates for runtime packages:sanity.cli.ts
- Latest versions served at runtime
- No need to rebuild for package updates
- Requires
appIdin deployment config
Environment Variables
Environment variables are embedded at build time:.env.production
SANITY_STUDIO_ are included:
Custom Vite Configuration
Extend build configuration insanity.config.ts:
sanity.config.ts
Base Path Configuration
Deploy to a subdirectory:sanity.cli.ts
Build Statistics
View detailed build statistics:Unattended Mode
For CI/CD pipelines:- Automatically cleans output directory
- Accepts default settings
- No interactive prompts
Troubleshooting
Build Fails
Check for common issues:- Schema errors - Validate your schema files
- TypeScript errors - Run type checking first
- Memory issues - Increase Node.js memory
Module Not Found
If you see module resolution errors:Large Bundle Size
If your bundle is too large:- Use
--statsto identify large modules - Lazy load heavy dependencies
- Remove unused plugins
- Optimize images and assets
Port Conflicts During Build
The build process doesn’t use a port, but if you see port conflicts:- Stop any running
sanity devprocesses - Clear the build cache
- Try building again
Monorepo Build
When working in the Sanity monorepo:Tests require a build first because some tests use compiled output. Run
pnpm build && pnpm test.Deployment
After building, you can:-
Deploy to Sanity hosting:
-
Deploy to static hosting (Vercel, Netlify, etc.):
-
Self-host:
Next Steps
Deploy Studio
Deploy your built Studio to Sanity hosting
Manage Projects
Manage your Sanity projects and settings