0.0.4 • Published 10 months ago

@dmno/cloudflare-platform v0.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

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.

0.0.4

10 months ago

0.0.3

11 months ago

0.0.2

12 months ago

0.0.1

1 year ago

0.0.0

1 year ago