Configure an efficient local development workflow with hot reload and mock responses for Gamma presentation development.
gamma-hello-world setupset -euo pipefail
npm install -D nodemon tsx dotenv @types/node
Add to package.json:
{
"scripts": {
"dev": "tsx watch src/index.ts",
"dev:mock": "GAMMA_MOCK=true tsx watch src/index.ts"
}
}
// src/gamma-client.ts
import { GammaClient } from '@gamma/sdk';
const isMock = process.env.GAMMA_MOCK === 'true';
export const gamma = isMock
? createMockClient()
: new GammaClient({ apiKey: process.env.GAMMA_API_KEY });
function createMockClient() {
return {
presentations: {
create: async (opts) => ({
id: 'mock-123',
url: 'https://gamma.app/mock/preview',
title: opts.title,
}),
},
};
}
# .env.development
GAMMA_API_KEY=your-dev-key
GAMMA_MOCK=false
# .env.test
GAMMA_MOCK=true
| Error | Cause | Solution |
|---|---|---|
| Watch Error | File permissions | Check nodemon config |
| Mock Mismatch | Mock out of sync | Update mock responses |
| Env Not Loaded | dotenv not configured | Add import 'dotenv/config' |
set -euo pipefail
npm run dev
# Changes to src/*.ts trigger automatic restart
set -euo pipefail
npm run dev:mock
# Uses mock responses, no API calls
Proceed to gamma-sdk-patterns for advanced SDK usage patterns.