astro-auto-adapter
NPM | GitHub | Licence
Let's you choose Astro Adapters based off of the ASTRO_ADAPTER_MODE
environment variable.
Supported Adapters:
What's New? 🚀
astro-auto-adapter
is now even smarter! Previously, you had to manually set the ASTRO_ADAPTER_MODE
environment variable to choose the right Astro adapter for your project.
Now, we've added some magic to automatically detect the deployment environment you're using.
For example, if you're deploying on Vercel Serverless
, the VERCEL
environment variable is set to 1
, and we'll automatically choose the Vercel serverless
adapter for you. Neat, right?
Dive into the docs to see the magic behind each adapter platform:
Heads Up: Some adapters require additional configuration. Don't worry; we've got detailed examples below to guide you through it.
Installation
npm install astro-auto-adapter
Others
yarn add astro-auto-adapter
or
pnpm install astro-auto-adapter
Usage
First, import the necessary types and the adapter
function from the package:
import { adapter, type IAdapterOptions } from "astro-auto-adapter";
Next, call the adapter()
function with the desired adapter type and options:
const astroAdapter = await adapter("netlify", {
netlify: {
dist: new URL("path/to/dist", import.meta.url),
},
});
Adapter Options
Here is an overview of the available adapter options:
VercelAdapterOptions
Configuration options for the Vercel serverless adapter.
import type { VercelAdapterOptions } from "astro-auto-adapter";
VercelStaticAdapterOptions
Configuration options for the Vercel static adapter.
import type { VercelStaticAdapterOptions } from "astro-auto-adapter";
NodeAdapterOptions
Configuration options for the Node adapter.
import type { NodeAdapterOptions } from "astro-auto-adapter";
CloudflareAdapterOptions
Configuration options for the Cloudflare adapter.
import type { CloudflareAdapterOptions } from "astro-auto-adapter";
DenoAdapterOptions
Configuration options for the Deno adapter.
import type { DenoAdapterOptions } from "astro-auto-adapter";
NetlifyAdapterOptions
Configuration options for the Netlify adapter.
import type { NetlifyAdapterOptions } from "astro-auto-adapter";
NetlifyFunctionsAdapterOptions
Configuration options for the Netlify functions adapter.
import type { NetlifyFunctionsAdapterOptions } from "astro-auto-adapter";
NetlifyStaticAdapterOptions
Configuration options for the Netlify static adapter.
import type { NetlifyStaticAdapterOptions } from "astro-auto-adapter";
Environment Variable
You can use the ASTRO_ADAPTER_MODE
environment variable to set the adapter type instead of providing it directly to the adapter()
function. If the environment variable is not set, the function defaults to the "node" adapter.
export ASTRO_ADAPTER_MODE="netlify"
Default Export
The package also includes a default export that can be used as a shorthand for calling the adapter()
function.
import adapter from "astro-auto-adapter";
const astroAdapter = await adapter("netlify", {
netlify: {
dist: new URL("path/to/dist", import.meta.url),
},
});
Examples
Here are some examples of how to use the package with various adapter types and configurations:
Cloudflare
import { adapter } from "astro-auto-adapter";
const options = {
mode: "directory",
};
const astroAdapter = await adapter("cloudflare", { cloudflare: options });
Deno
import { adapter } from "astro-auto-adapter";
const options = {
port: 3000,
hostname: "localhost",
};
const astroAdapter = await adapter("deno", { deno: options });
Netlify
import { adapter } from "astro-auto-adapter";
const options = {
dist: new URL("path/to/dist", import.meta.url),
builders: true,
binaryMediaTypes: ["application/octet-stream"],
};
const astroAdapter = await adapter("netlify", { netlify: options });
Netlify Static
import { adapter } from "astro-auto-adapter";
const options = {
dist: new URL("path/to/dist", import.meta.url),
};
const astroAdapter = await adapter("netlify-static", { "netlify-static": options });
Vercel
import { adapter } from "astro-auto-adapter";
const options = {
};
const astroAdapter = await adapter("vercel", { vercel: options });
Vercel Static
import { adapter } from "astro-auto-adapter";
const options = {
};
const astroAdapter = await adapter("vercel-static", { "vercel-static": options });
Node
import { adapter } from "astro-auto-adapter";
const options = {
};
const astroAdapter = await adapter("node", { node: options });
Showcase
A couple sites/projects that use astro-auto-adapter
:
- Your site/project here...
Contributing
I encourage you to use pnpm to contribute to this repo, but you can also use yarn or npm if you prefer.
Install all necessary packages
npm install
Then run tests
npm test
Build project
npm run build
Note: This project uses Conventional Commits standard for commits, so, please format your commits using the rules it sets out.
Licence
See the LICENSE file for license rights and limitations (MIT).