@dmno/cloudflare-platform

0.0.4 • Public • Published

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 npm

Installation

npm add @dmno/cloudflare-platform

Example 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 dwrangler wrapper and all the additional features DMNO unlocks in the docs.

Package Sidebar

Install

npm i @dmno/cloudflare-platform

Weekly Downloads

9

Version

0.0.4

License

MIT

Unpacked Size

58.2 kB

Total Files

11

Last publish

Collaborators

  • theo
  • philmillman