@electroplix/adapter
v0.1.6
Published
CLI for setting up Cloudflare Workers deploy pipelines in Next.js projects via OpenNext.
Readme
⚡ @electroplix/adapter
CLI for setting up Cloudflare Workers deploy pipelines in Next.js projects via OpenNext.
Zero-config setup — run one command inside any Next.js project to get a production-ready Cloudflare Workers deployment pipeline with optional GitHub Actions CI/CD.
Quick Start
# npx (no install required)
npx @electroplix/adapter
# or with pnpm
pnpm dlx @electroplix/adapter
# or install globally
npm i -g @electroplix/adapter
electroplix-adapterRun the command inside your Next.js project root. The CLI will walk you through setup interactively.
What It Does
When you run electroplix-adapter, the CLI will:
1. Detect Your Project
- Validates you're inside a Next.js project
- Auto-detects your package manager (npm, pnpm, yarn, bun)
- Checks for existing OpenNext / Wrangler configuration
2. Install Dependencies
| Package | Type | Purpose |
|---------|------|---------|
| @opennextjs/cloudflare | dependency | OpenNext adapter for Cloudflare Workers |
| wrangler | devDependency | Cloudflare Workers CLI |
3. Inject Scripts into package.json
The following scripts are added (existing scripts with the same name are preserved unless you choose to overwrite):
| Script | Command | Description |
|--------|---------|-------------|
| build | next build | Standard Next.js build |
| dev | next dev | Start local dev server |
| start | next start | Start production server |
| preview | opennextjs-cloudflare build && opennextjs-cloudflare preview | Build & preview locally on Workers |
| deploy | opennextjs-cloudflare build && opennextjs-cloudflare deploy | Build & deploy to Cloudflare Workers |
| cf-typegen | wrangler types --env-interface CloudflareEnv env.d.ts | Generate Cloudflare env types |
4. Generate Configuration Files
| File | Purpose |
|------|---------|
| open-next.config.ts | OpenNext Cloudflare configuration (with R2 cache comments) |
| wrangler.jsonc | Cloudflare Workers config (worker name, assets, compatibility flags) |
| env.d.ts | TypeScript interface for Cloudflare environment bindings |
5. (Optional) GitHub Actions Deploy Pipeline
If you say yes when prompted, a .github/workflows/deploy.yml is generated that:
- Triggers on push to
mainor manual dispatch - Installs dependencies using your detected package manager
- Builds with OpenNext and deploys to Cloudflare Workers
- Uses
CLOUDFLARE_API_TOKENandCLOUDFLARE_ACCOUNT_IDsecrets
Generated Files
After running the CLI, your project will have:
your-nextjs-project/
├── open-next.config.ts ← OpenNext Cloudflare config
├── wrangler.jsonc ← Cloudflare Workers config
├── env.d.ts ← CloudflareEnv type interface
├── .github/
│ └── workflows/
│ └── deploy.yml ← CI/CD pipeline (optional)
└── package.json ← Updated with deploy scriptsUsage After Setup
# Local development
npm run dev
# Build & preview on Workers locally
npm run preview
# Build & deploy to Cloudflare Workers
npm run deploy
# Generate Cloudflare env types
npm run cf-typegenGitHub Actions Setup
If you opted into the CI/CD pipeline, add these secrets to your GitHub repository:
| Secret | Description |
|--------|-------------|
| CLOUDFLARE_API_TOKEN | API token from Cloudflare dashboard (Workers:Edit permission) |
| CLOUDFLARE_ACCOUNT_ID | Your Cloudflare account ID |
The pipeline will automatically deploy on every push to main.
Programmatic API
You can also use the adapter programmatically in your own tooling:
import {
detectProject,
installPackages,
injectScripts,
writeConfigFiles,
writeGitHubActions,
} from '@electroplix/adapter';
const info = detectProject(process.cwd());
// Install @opennextjs/cloudflare + wrangler
installPackages(info.packageManager, info.root);
// Add deploy/preview/build scripts to package.json
injectScripts(info.root);
// Generate open-next.config.ts, wrangler.jsonc, env.d.ts
writeConfigFiles(info.root, 'my-worker-name');
// Generate .github/workflows/deploy.yml
writeGitHubActions(info.root, info.packageManager);Exported Functions
| Function | Description |
|----------|-------------|
| detectProject(root) | Detect Next.js project, package manager, existing config |
| detectPackageManager(root) | Detect npm / pnpm / yarn / bun |
| installPackages(pm, cwd) | Install required dependencies |
| injectScripts(root, overwrite?) | Merge deploy scripts into package.json |
| writeConfigFiles(root, name, overwrite?) | Generate OpenNext + Wrangler config files |
| writeGitHubActions(root, pm, overwrite?) | Generate GitHub Actions deploy workflow |
| openNextConfigContent() | Get open-next.config.ts content as string |
| wranglerConfigContent(name) | Get wrangler.jsonc content as string |
| envDtsContent() | Get env.d.ts content as string |
| deployWorkflowContent(pm) | Get deploy.yml content as string |
Requirements
- Node.js 18+
- Next.js project (any version 13+)
- Cloudflare account (for deployment)
Links
Run nx test adapter to execute the unit tests via Jest.
