0.0.4 • Published 9 months ago
@dmno/cloudflare-platform v0.0.4
Check out the docs for more information on how to use DMNO with Cloudflare.
If you have any questions, please reach out to us on Discord.
@dmno/cloudflare-platform 
Installation
npm add @dmno/cloudflare-platformExample Usage
import { CloudflareWranglerEnvSchema, DmnoWranglerEnvSchema } from '@dmno/cloudflare-platform';
import { OnePasswordDmnoPlugin } from '@dmno/1password-plugin';
import {
DmnoBaseTypes, defineDmnoService, pickFromSchemaObject, switchBy,
} from 'dmno';
// initialize our 1Password plugin
const opSecrets = new OnePasswordDmnoPlugin('1pass', {
fallbackToCliBasedAuth: true,
});
export default defineDmnoService({
schema: {
// config that affects wrangler directly
...pickFromSchemaObject(CloudflareWranglerEnvSchema, {
CLOUDFLARE_ACCOUNT_ID: {
value: opSecrets.itemByReference('op://Shared/Cloudflare/account id'),
},
CLOUDFLARE_API_TOKEN: {
value: opSecrets.itemByReference('op://Shared/Cloudflare/workers api token'),
},
}),
// special config that controls wrangler via `dwrangler` cli wrapper (all optional)
...pickFromSchemaObject(DmnoWranglerEnvSchema, {
WRANGLER_ENV: {}, // passed as --env
WRANGLER_DEV_IP: { value: 'custom.host.local' }, // passed as --ip
WRANGLER_DEV_PORT: { value: 8881 }, // passed as --port
WRANGLER_DEV_URL: {}, // will be populated with full dev URL
WRANGLER_LIVE_RELOAD: { value: true }, // passed as `--live-reload`
WRANGLER_DEV_ACTIVE: {}, // true when running `dwrangler dev` or `dwrangler pages dev`
WRANGLER_BUILD_ACTIVE: {}, // true when dwrangler is performing a build for deployment
}),
// ... rest of your app config
SOME_VAR: {
value: switchBy('WRANGLER_DEV_ACTIVE', { // use info from wrangler to affect other config
_default: 'dev value',
false: 'prod value',
}),
},
},
});dwrangler wrapper
Our Cloudflare platform integration also provides a thin wrapper called dwrangler that injects the config into the wrangler cli. In most cases, you can just use dwrangler in your package.json scripts instead of wrangler.
{
"scripts": {
"dev": "dwrangler dev",
"deploy": "dwrangler deploy"
}
}Read more about the
dwranglerwrapper and all the additional features DMNO unlocks in the docs.