mirror of
https://github.com/prdlk/dotfiles.git
synced 2026-11-03 11:37:36 +00:00
- 16 cross-shell utilities converted to sh/bash chezmoi executables: ai c2p cp-appid extract_agents fab gdc gh-sonr-org-migrate ghg-clone ghn gho git-summary launch_omp_livediff_overlay lc-elir mdcp mdp pj (ghg-clone not named ghg: unrelated cargo binary owns that name) - cwd/history helpers stay per-shell: yy c cd clip-last + ghg/ghn/gho cd-wrappers in bash/functions/ and zsh/functions/, loaded by rc files - fish keeps only shell-state functions; converted ones now hit PATH - cp-appid ignore gating moved to .local/bin path - dot_agents/skills: 82 skills materialized from dotstate storage so dot_claude skill symlinks resolve on fresh bootstrap; dotstate profile/symlinks.json released .agents/skills .bashrc .zshrc
4.5 KiB
4.5 KiB
Wrangler Programmatic API
Node.js APIs for testing and development.
startWorker (Testing)
Starts Worker with real local bindings for integration tests. Stable API (replaces unstable_startWorker).
import { startWorker } from "wrangler";
import { describe, it, before, after } from "node:test";
import assert from "node:assert";
describe("worker", () => {
let worker;
before(async () => {
worker = await startWorker({
config: "wrangler.jsonc",
environment: "development"
});
});
after(async () => {
await worker.dispose();
});
it("responds with 200", async () => {
const response = await worker.fetch("http://example.com");
assert.strictEqual(response.status, 200);
});
});
Options
| Option | Type | Description |
|---|---|---|
config |
string |
Path to wrangler.jsonc |
environment |
string |
Environment name from config |
persist |
boolean | { path: string } |
Enable persistent state |
bundle |
boolean |
Enable bundling (default: true) |
remote |
false | true | "minimal" |
Remote mode: false (local), true (full remote), "minimal" (remote bindings only) |
Remote Mode
// Local mode (default) - fast, simulated
const worker = await startWorker({ config: "wrangler.jsonc" });
// Full remote mode - production-like, slower
const worker = await startWorker({
config: "wrangler.jsonc",
remote: true
});
// Minimal remote mode - remote bindings, local Worker
const worker = await startWorker({
config: "wrangler.jsonc",
remote: "minimal"
});
getPlatformProxy
Emulate bindings in Node.js without starting Worker.
import { getPlatformProxy } from "wrangler";
const { env, dispose, caches } = await getPlatformProxy<Env>({
configPath: "wrangler.jsonc",
environment: "production",
persist: { path: ".wrangler/state" }
});
// Use bindings
const value = await env.MY_KV.get("key");
await env.DB.prepare("SELECT * FROM users").all();
await env.ASSETS.put("file.txt", "content");
// Platform APIs
await caches.default.put("https://example.com", new Response("cached"));
await dispose();
Use for unit tests (test functions, not full Worker) or scripts that need bindings.
Type Generation
Generate types from config: wrangler types → creates worker-configuration.d.ts
Event System
Listen to Worker lifecycle events for advanced workflows.
import { startWorker } from "wrangler";
const worker = await startWorker({
config: "wrangler.jsonc",
bundle: true
});
// Bundle events
worker.on("bundleStart", (details) => {
console.log("Bundling started:", details.config);
});
worker.on("bundleComplete", (details) => {
console.log("Bundle ready:", details.duration);
});
// Reconfiguration events
worker.on("reloadStart", () => {
console.log("Worker reloading...");
});
worker.on("reloadComplete", () => {
console.log("Worker reloaded");
});
await worker.dispose();
Dynamic Reconfiguration
import { startWorker } from "wrangler";
const worker = await startWorker({ config: "wrangler.jsonc" });
// Replace entire config
await worker.setConfig({
config: "wrangler.staging.jsonc",
environment: "staging"
});
// Patch specific fields
await worker.patchConfig({
vars: { DEBUG: "true" }
});
await worker.dispose();
unstable_dev (Deprecated)
Use startWorker instead.
Multi-Worker Registry
Test multiple Workers with service bindings.
import { startWorker } from "wrangler";
const auth = await startWorker({ config: "./auth/wrangler.jsonc" });
const api = await startWorker({
config: "./api/wrangler.jsonc",
bindings: { AUTH: auth } // Service binding
});
const response = await api.fetch("http://example.com/api/login");
// API Worker calls AUTH Worker via env.AUTH.fetch()
await api.dispose();
await auth.dispose();
Best Practices
- Use
startWorkerfor integration tests (tests full Worker) - Use
getPlatformProxyfor unit tests (tests individual functions) - Use
remote: truewhen debugging production-specific issues - Use
remote: "minimal"for faster tests with real bindings - Enable
persist: truefor debugging (state survives runs) - Run
wrangler typesafter config changes - Always
dispose()to prevent resource leaks - Listen to bundle events for build monitoring
- Use multi-worker registry for testing service bindings
See Also
- README.md - CLI commands
- configuration.md - Config
- patterns.md - Testing patterns